From 69a1d22cea70552c29074847064531fc71665e0d Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Wed, 7 Dec 2011 09:46:51 -0500 Subject: [PATCH] bash-4.0 more stray file cleanup --- #pcomplete.c# | 1448 - CHANGES-4.0-beta2 | 32 - CWRU/#CWRU.chlog# | 15250 --------- bash-20060316/-i | 0 bash-20060316/.DS_Store | Bin 24580 -> 0 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/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/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/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/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/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 15364 -> 0 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/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 131900 -> 0 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.html | 11544 ------- bash-20060316/doc/bash.pdf | Bin 657635 -> 0 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 590960 -> 0 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 540354 -> 0 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.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 228533 -> 0 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/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 4609 -> 0 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 - 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/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/jobs.c | 4068 --- 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/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 79860 -> 0 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 278124 -> 0 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 92940 -> 0 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/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/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 118280 -> 0 bytes bash-20060316/po/en@boldquot.header | 25 - bash-20060316/po/en@boldquot.po | 3460 -- bash-20060316/po/en@quot.gmo | Bin 116592 -> 0 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.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/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/shx | 15 - 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 1287 -> 0 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 - copyright-comment | 13 - copyright-def | 12 - copyright-makefile | 13 - ddd1 | 12 - display-ctrl-r.patch | 47 - jobs-patch | 65 - jobs.c.20080704 | 4165 --- jobs.c.patch | 56 - lib/malloc/malloc.c.bad | 1216 - lib/readline/copyright-comment | 12 - lib/readline/copyright-history | 12 - lib/readline/ddd1 | 163 - lib/readline/menucomp | 276 - lib/sh/shmatch.c.debug | 127 - mksyntax.c.gettext | 417 - parse.y.debug | 4961 --- parse.y.regexp | 24 - shell-compat.patch | 84 - tests/core | Bin 5174145 -> 0 bytes tests/gmon.out | Bin 924316 -> 0 bytes 1287 files changed, 651548 deletions(-) delete mode 100644 #pcomplete.c# delete mode 100644 CHANGES-4.0-beta2 delete mode 100644 CWRU/#CWRU.chlog# delete mode 100644 bash-20060316/-i delete mode 100644 bash-20060316/.DS_Store delete mode 100644 bash-20060316/.gdb_history delete mode 100644 bash-20060316/ABOUT-NLS delete mode 100644 bash-20060316/AUTHORS delete mode 100644 bash-20060316/CHANGES delete mode 100644 bash-20060316/COMPAT delete mode 100644 bash-20060316/COPYING delete mode 100644 bash-20060316/CWRU/-i delete mode 100644 bash-20060316/CWRU/CWRU.chlog delete mode 100644 bash-20060316/CWRU/OS-BUGS/att-yacc-bug delete mode 100644 bash-20060316/CWRU/OS-BUGS/bsd-rshd-bug delete mode 100644 bash-20060316/CWRU/OS-BUGS/bsd-tty-driver delete mode 100644 bash-20060316/CWRU/OS-BUGS/hpux-ulimit-bug delete mode 100644 bash-20060316/CWRU/OS-BUGS/isc-posix-bug delete mode 100644 bash-20060316/CWRU/OS-BUGS/next-rlogind-bug delete mode 100644 bash-20060316/CWRU/OS-BUGS/sco-3.2.4-bug delete mode 100644 bash-20060316/CWRU/OS-BUGS/sequent-fcntl-dup2-bug delete mode 100644 bash-20060316/CWRU/OS-BUGS/sun-yp-bug delete mode 100644 bash-20060316/CWRU/OS-BUGS/ultrix-bugs delete mode 100644 bash-20060316/CWRU/PLATFORMS delete mode 100644 bash-20060316/CWRU/README delete mode 120000 bash-20060316/CWRU/changelog delete mode 100644 bash-20060316/CWRU/history-syslog.1 delete mode 100644 bash-20060316/CWRU/mh-folder-comp delete mode 100755 bash-20060316/CWRU/misc/bison delete mode 100644 bash-20060316/CWRU/misc/copyright delete mode 100644 bash-20060316/CWRU/misc/errlist.c delete mode 100644 bash-20060316/CWRU/misc/getwd.bsd44.c delete mode 100644 bash-20060316/CWRU/misc/hpux10-dlfcn.h delete mode 100644 bash-20060316/CWRU/misc/iptrt.c delete mode 100644 bash-20060316/CWRU/misc/nofd0.c delete mode 100644 bash-20060316/CWRU/misc/open-files.c delete mode 100644 bash-20060316/CWRU/misc/pcat.c delete mode 100644 bash-20060316/CWRU/misc/pgrp.c delete mode 100644 bash-20060316/CWRU/misc/pid.c delete mode 100644 bash-20060316/CWRU/misc/sigs.c delete mode 100644 bash-20060316/CWRU/misc/sigstat.c delete mode 100644 bash-20060316/CWRU/misc/stderr.c delete mode 100644 bash-20060316/CWRU/misc/test-strtod.c delete mode 100644 bash-20060316/CWRU/new/execute_cmd.c.lastpipe-first delete mode 100644 bash-20060316/CWRU/old-changelogs/CHANGES.051093 delete mode 100644 bash-20060316/CWRU/old-changelogs/CHANGES.071193 delete mode 100644 bash-20060316/CWRU/old-changelogs/CHANGES.090393 delete mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v10 delete mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v11 delete mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v12 delete mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v2 delete mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v3 delete mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v4 delete mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v5 delete mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v6 delete mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v7 delete mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v8 delete mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v9 delete mode 100644 bash-20060316/CWRU/old-conf/Makefile delete mode 100644 bash-20060316/CWRU/old-conf/Makefile.builtins delete mode 100644 bash-20060316/CWRU/old-conf/Makefile.documentation delete mode 100644 bash-20060316/CWRU/old-conf/Makefile.lib.glob delete mode 100644 bash-20060316/CWRU/old-conf/Makefile.lib.malloc delete mode 100644 bash-20060316/CWRU/old-conf/Makefile.lib.readline delete mode 100644 bash-20060316/CWRU/old-conf/Makefile.lib.termcap delete mode 100644 bash-20060316/CWRU/old-conf/Makefile.lib.tilde delete mode 100644 bash-20060316/CWRU/old-conf/config.h delete mode 100644 bash-20060316/CWRU/old-conf/config.h.mini delete mode 100755 bash-20060316/CWRU/old-conf/configure delete mode 100644 bash-20060316/CWRU/old-conf/cpp-Makefile delete mode 100644 bash-20060316/CWRU/old-conf/machines.h delete mode 100644 bash-20060316/CWRU/old-conf/support/cat-s delete mode 100755 bash-20060316/CWRU/old-conf/support/cppmagic delete mode 100644 bash-20060316/CWRU/old-conf/support/getcppsyms.c delete mode 100755 bash-20060316/CWRU/old-conf/support/inpath delete mode 100755 bash-20060316/CWRU/old-conf/support/mkmachtype delete mode 100755 bash-20060316/CWRU/old-conf/support/mksysdefs delete mode 100755 bash-20060316/CWRU/old-conf/support/srcdir delete mode 100644 bash-20060316/CWRU/old/KSH.README delete mode 100644 bash-20060316/CWRU/old/RELEASE.113 delete mode 100644 bash-20060316/CWRU/old/RSH.README delete mode 100644 bash-20060316/CWRU/old/array.doc delete mode 100755 bash-20060316/CWRU/old/fixlib delete mode 100644 bash-20060316/CWRU/old/histctl.def delete mode 100644 bash-20060316/CWRU/old/longsig.c delete mode 100755 bash-20060316/CWRU/old/mklinks delete mode 100755 bash-20060316/CWRU/old/mktarfile delete mode 100644 bash-20060316/CWRU/old/mkversion.c delete mode 100644 bash-20060316/CWRU/old/pagesize.c delete mode 100755 bash-20060316/CWRU/old/pagesize.sh delete mode 100644 bash-20060316/CWRU/old/parse.y.noctlnul delete mode 100644 bash-20060316/CWRU/old/read.def.stdio delete mode 100644 bash-20060316/CWRU/old/subst.c.noctlnul delete mode 100644 bash-20060316/CWRU/posix-parser/Makefile delete mode 100644 bash-20060316/CWRU/posix-parser/aux.c delete mode 100644 bash-20060316/CWRU/posix-parser/command.h delete mode 100644 bash-20060316/CWRU/posix-parser/copy.c delete mode 100644 bash-20060316/CWRU/posix-parser/endian.h delete mode 100644 bash-20060316/CWRU/posix-parser/main.c delete mode 100644 bash-20060316/CWRU/posix-parser/make.c delete mode 100644 bash-20060316/CWRU/posix-parser/parse.y delete mode 100644 bash-20060316/CWRU/posix-parser/shell.h delete mode 100644 bash-20060316/CWRU/save/unwind_prot.c.sighandling delete mode 100644 bash-20060316/CWRU/sh-redir-hack delete mode 100644 bash-20060316/INSTALL delete mode 100644 bash-20060316/MANIFEST delete mode 100644 bash-20060316/MANIFEST.doc delete mode 100644 bash-20060316/Makefile.in delete mode 100644 bash-20060316/NEWS delete mode 100644 bash-20060316/NOTES delete mode 100644 bash-20060316/POSIX delete mode 100644 bash-20060316/RBASH delete mode 100644 bash-20060316/README delete mode 100644 bash-20060316/Y2K delete mode 100644 bash-20060316/aclocal.m4 delete mode 100644 bash-20060316/alias.c delete mode 100644 bash-20060316/alias.h delete mode 100644 bash-20060316/array.c delete mode 100644 bash-20060316/array.h delete mode 100644 bash-20060316/arrayfunc.c delete mode 100644 bash-20060316/arrayfunc.h delete mode 100644 bash-20060316/autom4te-2.53.cache/output.0 delete mode 100644 bash-20060316/autom4te-2.53.cache/requests delete mode 100644 bash-20060316/autom4te-2.53.cache/traces.0 delete mode 100644 bash-20060316/autom4te.cache/output.0 delete mode 100644 bash-20060316/autom4te.cache/requests delete mode 100644 bash-20060316/autom4te.cache/traces.0 delete mode 100644 bash-20060316/bashansi.h delete mode 100644 bash-20060316/bashhist.c delete mode 100644 bash-20060316/bashhist.h delete mode 100644 bash-20060316/bashintl.h delete mode 100644 bash-20060316/bashjmp.h delete mode 100644 bash-20060316/bashline.c delete mode 100644 bash-20060316/bashline.h delete mode 100644 bash-20060316/bashtypes.h delete mode 100644 bash-20060316/bracecomp.c delete mode 100644 bash-20060316/braces.c delete mode 100644 bash-20060316/builtins.h delete mode 100644 bash-20060316/builtins/-i delete mode 100644 bash-20060316/builtins/ChangeLog delete mode 100644 bash-20060316/builtins/Makefile.in delete mode 100644 bash-20060316/builtins/alias.def delete mode 100644 bash-20060316/builtins/bashgetopt.c delete mode 100644 bash-20060316/builtins/bashgetopt.h delete mode 100644 bash-20060316/builtins/bind.def delete mode 100644 bash-20060316/builtins/break.def delete mode 100644 bash-20060316/builtins/builtin.def delete mode 100644 bash-20060316/builtins/caller.def delete mode 100644 bash-20060316/builtins/cd.def delete mode 100644 bash-20060316/builtins/colon.def delete mode 100644 bash-20060316/builtins/command.def delete mode 100644 bash-20060316/builtins/common.c delete mode 100644 bash-20060316/builtins/common.h delete mode 100644 bash-20060316/builtins/complete.def delete mode 100644 bash-20060316/builtins/declare.def delete mode 100644 bash-20060316/builtins/echo.def delete mode 100644 bash-20060316/builtins/enable.def delete mode 100644 bash-20060316/builtins/eval.def delete mode 100644 bash-20060316/builtins/evalfile.c delete mode 100644 bash-20060316/builtins/evalstring.c delete mode 100644 bash-20060316/builtins/exec.def delete mode 100644 bash-20060316/builtins/exit.def delete mode 100644 bash-20060316/builtins/fc.def delete mode 100644 bash-20060316/builtins/fg_bg.def delete mode 100644 bash-20060316/builtins/getopt.c delete mode 100644 bash-20060316/builtins/getopt.h delete mode 100644 bash-20060316/builtins/getopts.def delete mode 100644 bash-20060316/builtins/hash.def delete mode 100644 bash-20060316/builtins/help.def delete mode 100644 bash-20060316/builtins/history.def delete mode 100644 bash-20060316/builtins/inlib.def delete mode 100644 bash-20060316/builtins/jobs.def delete mode 100644 bash-20060316/builtins/kill.def delete mode 100644 bash-20060316/builtins/let.def delete mode 100644 bash-20060316/builtins/mkbuiltins.c delete mode 100644 bash-20060316/builtins/printf.def delete mode 100644 bash-20060316/builtins/psize-posix.c delete mode 100644 bash-20060316/builtins/psize.c delete mode 100644 bash-20060316/builtins/psize.sh delete mode 100644 bash-20060316/builtins/pushd.def delete mode 100644 bash-20060316/builtins/read.def delete mode 100644 bash-20060316/builtins/reserved.def delete mode 100644 bash-20060316/builtins/return.def delete mode 100644 bash-20060316/builtins/set.def delete mode 100644 bash-20060316/builtins/setattr.def delete mode 100644 bash-20060316/builtins/shift.def delete mode 100644 bash-20060316/builtins/shopt.def delete mode 100644 bash-20060316/builtins/source.def delete mode 100644 bash-20060316/builtins/suspend.def delete mode 100644 bash-20060316/builtins/test.def delete mode 100644 bash-20060316/builtins/times.def delete mode 100644 bash-20060316/builtins/trap.def delete mode 100644 bash-20060316/builtins/type.def delete mode 100644 bash-20060316/builtins/ulimit.def delete mode 100644 bash-20060316/builtins/umask.def delete mode 100644 bash-20060316/builtins/wait.def delete mode 100644 bash-20060316/builtins/xkill.def delete mode 100644 bash-20060316/command.h delete mode 100644 bash-20060316/config-bot.h delete mode 100644 bash-20060316/config-top.h delete mode 100644 bash-20060316/config.h.in delete mode 100755 bash-20060316/configure delete mode 100755 bash-20060316/configure.debug delete mode 100644 bash-20060316/configure.in delete mode 100644 bash-20060316/configure.mk delete mode 100644 bash-20060316/conftypes.h delete mode 100644 bash-20060316/copy_cmd.c delete mode 100644 bash-20060316/cross-build/beos-sig.h delete mode 100644 bash-20060316/cross-build/cygwin32.cache delete mode 100644 bash-20060316/cross-build/opennt.cache delete mode 100644 bash-20060316/cross-build/win32sig.h delete mode 100644 bash-20060316/cross-build/x86-beos.cache delete mode 100644 bash-20060316/dispose_cmd.c delete mode 100644 bash-20060316/dispose_cmd.h delete mode 100644 bash-20060316/doc/-i delete mode 100644 bash-20060316/doc/.DS_Store delete mode 100644 bash-20060316/doc/FAQ delete mode 100644 bash-20060316/doc/FAQ-2.05a delete mode 100644 bash-20060316/doc/FAQ-2.05b delete mode 100644 bash-20060316/doc/FAQ-3.0 delete mode 100644 bash-20060316/doc/INTRO delete mode 120000 bash-20060316/doc/Makefile delete mode 100644 bash-20060316/doc/Makefile.in delete mode 100644 bash-20060316/doc/README delete mode 100644 bash-20060316/doc/article.ms delete mode 100644 bash-20060316/doc/article.pdf delete mode 100644 bash-20060316/doc/article.ps delete mode 100644 bash-20060316/doc/article.pt.ps delete mode 100644 bash-20060316/doc/article.txt delete mode 100644 bash-20060316/doc/bash.0 delete mode 100644 bash-20060316/doc/bash.1 delete mode 100644 bash-20060316/doc/bash.html delete mode 100644 bash-20060316/doc/bash.pdf delete mode 100644 bash-20060316/doc/bash.ps delete mode 100644 bash-20060316/doc/bashbug.0 delete mode 100644 bash-20060316/doc/bashbug.1 delete mode 100644 bash-20060316/doc/bashbug.ps delete mode 120000 bash-20060316/doc/bashman.html delete mode 100644 bash-20060316/doc/bashref.aux delete mode 100644 bash-20060316/doc/bashref.bt delete mode 100644 bash-20060316/doc/bashref.bts delete mode 100644 bash-20060316/doc/bashref.cp delete mode 100644 bash-20060316/doc/bashref.cps delete mode 100644 bash-20060316/doc/bashref.dvi delete mode 100644 bash-20060316/doc/bashref.fn delete mode 100644 bash-20060316/doc/bashref.fns delete mode 100644 bash-20060316/doc/bashref.html delete mode 100644 bash-20060316/doc/bashref.info delete mode 100644 bash-20060316/doc/bashref.ky delete mode 100644 bash-20060316/doc/bashref.log delete mode 100644 bash-20060316/doc/bashref.pdf delete mode 100644 bash-20060316/doc/bashref.pg delete mode 100644 bash-20060316/doc/bashref.ps delete mode 100644 bash-20060316/doc/bashref.rw delete mode 100644 bash-20060316/doc/bashref.rws delete mode 100644 bash-20060316/doc/bashref.texi delete mode 100644 bash-20060316/doc/bashref.toc delete mode 100644 bash-20060316/doc/bashref.tp delete mode 100644 bash-20060316/doc/bashref.vr delete mode 100644 bash-20060316/doc/bashref.vrs delete mode 100644 bash-20060316/doc/builtins.0 delete mode 100644 bash-20060316/doc/builtins.1 delete mode 100644 bash-20060316/doc/builtins.ps delete mode 100644 bash-20060316/doc/faq.headers.mail delete mode 100644 bash-20060316/doc/faq.headers.news delete mode 100644 bash-20060316/doc/faq.headers.news2 delete mode 100644 bash-20060316/doc/faq.mail delete mode 100644 bash-20060316/doc/faq.news delete mode 100644 bash-20060316/doc/faq.news2 delete mode 100644 bash-20060316/doc/faq.version delete mode 100644 bash-20060316/doc/fdl.texi delete mode 100644 bash-20060316/doc/fdl.txt delete mode 100755 bash-20060316/doc/htmlpost.sh delete mode 100755 bash-20060316/doc/infopost.sh delete mode 100755 bash-20060316/doc/mkfaqvers delete mode 100755 bash-20060316/doc/mkinstall delete mode 100755 bash-20060316/doc/mkinstall-tmp delete mode 100755 bash-20060316/doc/mkposix delete mode 100755 bash-20060316/doc/mkrbash delete mode 100644 bash-20060316/doc/newbash.texi delete mode 100644 bash-20060316/doc/old-faq.html delete mode 100644 bash-20060316/doc/oldbash.texi delete mode 100644 bash-20060316/doc/rbash.0 delete mode 100644 bash-20060316/doc/rbash.1 delete mode 100644 bash-20060316/doc/rbash.ps delete mode 100644 bash-20060316/doc/rose94.pdf delete mode 100644 bash-20060316/doc/rose94.ps delete mode 120000 bash-20060316/doc/texinfo.tex delete mode 100644 bash-20060316/doc/texinfo.tex.20030205 delete mode 100644 bash-20060316/doc/version.texi delete mode 100644 bash-20060316/error.c delete mode 100644 bash-20060316/error.h delete mode 100644 bash-20060316/eval.c delete mode 100644 bash-20060316/examples/INDEX.html delete mode 100644 bash-20060316/examples/INDEX.txt delete mode 100644 bash-20060316/examples/bashdb/PERMISSION delete mode 100644 bash-20060316/examples/bashdb/README delete mode 100755 bash-20060316/examples/bashdb/bashdb delete mode 100644 bash-20060316/examples/bashdb/bashdb.el delete mode 100644 bash-20060316/examples/bashdb/bashdb.vaughan delete mode 100644 bash-20060316/examples/complete/bashcc-1.0.1.tar.gz delete mode 100644 bash-20060316/examples/complete/complete-examples delete mode 100644 bash-20060316/examples/complete/complete-tests delete mode 100644 bash-20060316/examples/complete/complete.freebsd delete mode 100644 bash-20060316/examples/complete/complete.gnu-longopt delete mode 100644 bash-20060316/examples/complete/complete.ianmac delete mode 100644 bash-20060316/examples/complete/complete2.ianmac delete mode 100644 bash-20060316/examples/functions/array-stuff delete mode 100644 bash-20060316/examples/functions/array-to-string delete mode 100644 bash-20060316/examples/functions/autoload delete mode 100644 bash-20060316/examples/functions/autoload.v2 delete mode 100644 bash-20060316/examples/functions/autoload.v3 delete mode 100644 bash-20060316/examples/functions/basename delete mode 100644 bash-20060316/examples/functions/basename2 delete mode 100644 bash-20060316/examples/functions/coproc.bash delete mode 100644 bash-20060316/examples/functions/coshell.README delete mode 100644 bash-20060316/examples/functions/coshell.bash delete mode 100644 bash-20060316/examples/functions/csh-compat delete mode 100644 bash-20060316/examples/functions/dirfuncs delete mode 100644 bash-20060316/examples/functions/dirname delete mode 100644 bash-20060316/examples/functions/emptydir delete mode 100644 bash-20060316/examples/functions/exitstat delete mode 100644 bash-20060316/examples/functions/external delete mode 100644 bash-20060316/examples/functions/fact delete mode 100644 bash-20060316/examples/functions/fstty delete mode 100644 bash-20060316/examples/functions/func delete mode 100644 bash-20060316/examples/functions/gethtml delete mode 100644 bash-20060316/examples/functions/getoptx.bash delete mode 100644 bash-20060316/examples/functions/inetaddr delete mode 100644 bash-20060316/examples/functions/inpath delete mode 100644 bash-20060316/examples/functions/isnum.bash delete mode 100644 bash-20060316/examples/functions/isnum2 delete mode 100644 bash-20060316/examples/functions/isvalidip delete mode 100644 bash-20060316/examples/functions/jdate.bash delete mode 100644 bash-20060316/examples/functions/jj.bash delete mode 100644 bash-20060316/examples/functions/keep delete mode 100644 bash-20060316/examples/functions/ksh-cd delete mode 100644 bash-20060316/examples/functions/ksh-compat-test delete mode 100644 bash-20060316/examples/functions/kshenv delete mode 100644 bash-20060316/examples/functions/login delete mode 100644 bash-20060316/examples/functions/lowercase delete mode 100644 bash-20060316/examples/functions/manpage delete mode 100644 bash-20060316/examples/functions/mhfold delete mode 100644 bash-20060316/examples/functions/notify.bash delete mode 100644 bash-20060316/examples/functions/pathfuncs delete mode 100644 bash-20060316/examples/functions/recurse delete mode 100644 bash-20060316/examples/functions/repeat2 delete mode 100644 bash-20060316/examples/functions/repeat3 delete mode 100644 bash-20060316/examples/functions/seq delete mode 100644 bash-20060316/examples/functions/seq2 delete mode 100644 bash-20060316/examples/functions/shcat delete mode 100644 bash-20060316/examples/functions/shcat2 delete mode 100644 bash-20060316/examples/functions/sort-pos-params delete mode 100644 bash-20060316/examples/functions/sqroot delete mode 100644 bash-20060316/examples/functions/substr delete mode 100644 bash-20060316/examples/functions/substr2 delete mode 100644 bash-20060316/examples/functions/term delete mode 100644 bash-20060316/examples/functions/whatis delete mode 100644 bash-20060316/examples/functions/whence delete mode 100644 bash-20060316/examples/functions/which delete mode 100644 bash-20060316/examples/functions/xalias.bash delete mode 100644 bash-20060316/examples/functions/xfind.bash delete mode 100644 bash-20060316/examples/loadables/Makefile.in delete mode 100644 bash-20060316/examples/loadables/README delete mode 100644 bash-20060316/examples/loadables/TODO delete mode 100644 bash-20060316/examples/loadables/basename.c delete mode 100644 bash-20060316/examples/loadables/bsdos.glue.c delete mode 100644 bash-20060316/examples/loadables/cat.c delete mode 100644 bash-20060316/examples/loadables/cut.c delete mode 100644 bash-20060316/examples/loadables/dirname.c delete mode 100644 bash-20060316/examples/loadables/finfo.c delete mode 100644 bash-20060316/examples/loadables/getconf.c delete mode 100644 bash-20060316/examples/loadables/getconf.h delete mode 100644 bash-20060316/examples/loadables/head.c delete mode 100644 bash-20060316/examples/loadables/hello.c delete mode 100644 bash-20060316/examples/loadables/id.c delete mode 100644 bash-20060316/examples/loadables/ln.c delete mode 100644 bash-20060316/examples/loadables/logname.c delete mode 100644 bash-20060316/examples/loadables/mkdir.c delete mode 100644 bash-20060316/examples/loadables/necho.c delete mode 100644 bash-20060316/examples/loadables/pathchk.c delete mode 120000 bash-20060316/examples/loadables/perl/Makefile delete mode 100644 bash-20060316/examples/loadables/perl/Makefile.in delete mode 100644 bash-20060316/examples/loadables/perl/README delete mode 100644 bash-20060316/examples/loadables/perl/bperl.c delete mode 100644 bash-20060316/examples/loadables/perl/iperl.c delete mode 100644 bash-20060316/examples/loadables/print.c delete mode 100644 bash-20060316/examples/loadables/printenv.c delete mode 100644 bash-20060316/examples/loadables/push.c delete mode 100644 bash-20060316/examples/loadables/pushd.def delete mode 100644 bash-20060316/examples/loadables/pushd.inc delete mode 100644 bash-20060316/examples/loadables/realpath.c delete mode 100644 bash-20060316/examples/loadables/rmdir.c delete mode 100644 bash-20060316/examples/loadables/sleep.c delete mode 100644 bash-20060316/examples/loadables/sprintf.c delete mode 100644 bash-20060316/examples/loadables/strftime.c delete mode 100644 bash-20060316/examples/loadables/sync.c delete mode 100644 bash-20060316/examples/loadables/tee.c delete mode 100644 bash-20060316/examples/loadables/template.c delete mode 100644 bash-20060316/examples/loadables/truefalse.c delete mode 100644 bash-20060316/examples/loadables/tty.c delete mode 100644 bash-20060316/examples/loadables/uname.c delete mode 100644 bash-20060316/examples/loadables/unlink.c delete mode 100644 bash-20060316/examples/loadables/whoami.c delete mode 100644 bash-20060316/examples/loadables/xtitle.c delete mode 100755 bash-20060316/examples/misc/aliasconv.bash delete mode 100755 bash-20060316/examples/misc/aliasconv.sh delete mode 100755 bash-20060316/examples/misc/cshtobash delete mode 100644 bash-20060316/examples/misc/suncmd.termcap delete mode 100644 bash-20060316/examples/obashdb/PERMISSION delete mode 100644 bash-20060316/examples/obashdb/README delete mode 100644 bash-20060316/examples/obashdb/bashdb delete mode 100644 bash-20060316/examples/obashdb/bashdb.fns delete mode 100644 bash-20060316/examples/obashdb/bashdb.pre delete mode 100644 bash-20060316/examples/obashdb/bashdb.x delete mode 100644 bash-20060316/examples/scripts.noah/PERMISSION delete mode 100644 bash-20060316/examples/scripts.noah/README delete mode 100644 bash-20060316/examples/scripts.noah/aref.bash delete mode 100644 bash-20060316/examples/scripts.noah/bash.sub.bash delete mode 100644 bash-20060316/examples/scripts.noah/bash_version.bash delete mode 100644 bash-20060316/examples/scripts.noah/meta.bash delete mode 100644 bash-20060316/examples/scripts.noah/mktmp.bash delete mode 100644 bash-20060316/examples/scripts.noah/number.bash delete mode 100644 bash-20060316/examples/scripts.noah/prompt.bash delete mode 100644 bash-20060316/examples/scripts.noah/remap_keys.bash delete mode 100644 bash-20060316/examples/scripts.noah/require.bash delete mode 100644 bash-20060316/examples/scripts.noah/send_mail.bash delete mode 100644 bash-20060316/examples/scripts.noah/shcat.bash delete mode 100644 bash-20060316/examples/scripts.noah/source.bash delete mode 100644 bash-20060316/examples/scripts.noah/string.bash delete mode 100644 bash-20060316/examples/scripts.noah/stty.bash delete mode 100644 bash-20060316/examples/scripts.noah/y_or_n_p.bash delete mode 100644 bash-20060316/examples/scripts.v2/PERMISSION delete mode 100644 bash-20060316/examples/scripts.v2/README delete mode 100644 bash-20060316/examples/scripts.v2/arc2tarz delete mode 100644 bash-20060316/examples/scripts.v2/bashrand delete mode 100644 bash-20060316/examples/scripts.v2/cal2day.bash delete mode 100644 bash-20060316/examples/scripts.v2/cdhist.bash delete mode 100644 bash-20060316/examples/scripts.v2/corename delete mode 100644 bash-20060316/examples/scripts.v2/fman delete mode 100755 bash-20060316/examples/scripts.v2/frcp delete mode 100644 bash-20060316/examples/scripts.v2/lowercase delete mode 100644 bash-20060316/examples/scripts.v2/ncp delete mode 100644 bash-20060316/examples/scripts.v2/newext delete mode 100644 bash-20060316/examples/scripts.v2/nmv delete mode 100644 bash-20060316/examples/scripts.v2/pages delete mode 100644 bash-20060316/examples/scripts.v2/pf delete mode 100644 bash-20060316/examples/scripts.v2/pmtop delete mode 100644 bash-20060316/examples/scripts.v2/ren delete mode 100644 bash-20060316/examples/scripts.v2/rename delete mode 100644 bash-20060316/examples/scripts.v2/repeat delete mode 100644 bash-20060316/examples/scripts.v2/shprof delete mode 100644 bash-20060316/examples/scripts.v2/untar delete mode 100644 bash-20060316/examples/scripts.v2/uudec delete mode 100644 bash-20060316/examples/scripts.v2/uuenc delete mode 100644 bash-20060316/examples/scripts.v2/vtree delete mode 100644 bash-20060316/examples/scripts.v2/where delete mode 100755 bash-20060316/examples/scripts/adventure.sh delete mode 100755 bash-20060316/examples/scripts/bcsh.sh delete mode 100644 bash-20060316/examples/scripts/cat.sh delete mode 100644 bash-20060316/examples/scripts/center delete mode 100644 bash-20060316/examples/scripts/dd-ex.sh delete mode 100644 bash-20060316/examples/scripts/fixfiles.bash delete mode 100644 bash-20060316/examples/scripts/hanoi.bash delete mode 100755 bash-20060316/examples/scripts/inpath delete mode 100755 bash-20060316/examples/scripts/krand.bash delete mode 100644 bash-20060316/examples/scripts/line-input.bash delete mode 100644 bash-20060316/examples/scripts/nohup.bash delete mode 100755 bash-20060316/examples/scripts/precedence delete mode 100644 bash-20060316/examples/scripts/randomcard.bash delete mode 100755 bash-20060316/examples/scripts/scrollbar delete mode 100755 bash-20060316/examples/scripts/scrollbar2 delete mode 100644 bash-20060316/examples/scripts/self-repro delete mode 100644 bash-20060316/examples/scripts/showperm.bash delete mode 100755 bash-20060316/examples/scripts/shprompt delete mode 100644 bash-20060316/examples/scripts/spin.bash delete mode 100644 bash-20060316/examples/scripts/timeout delete mode 100755 bash-20060316/examples/scripts/vtree2 delete mode 100644 bash-20060316/examples/scripts/vtree3 delete mode 100644 bash-20060316/examples/scripts/vtree3a delete mode 100644 bash-20060316/examples/scripts/websrv.sh delete mode 100755 bash-20060316/examples/scripts/xterm_title delete mode 100755 bash-20060316/examples/scripts/zprintf delete mode 100644 bash-20060316/examples/startup-files/Bash_aliases delete mode 100644 bash-20060316/examples/startup-files/Bash_profile delete mode 100644 bash-20060316/examples/startup-files/Bashrc.bfox delete mode 100644 bash-20060316/examples/startup-files/README delete mode 100644 bash-20060316/examples/startup-files/apple/README delete mode 100644 bash-20060316/examples/startup-files/apple/aliases delete mode 100644 bash-20060316/examples/startup-files/apple/bash.defaults delete mode 100644 bash-20060316/examples/startup-files/apple/environment delete mode 100644 bash-20060316/examples/startup-files/apple/login delete mode 100644 bash-20060316/examples/startup-files/apple/logout delete mode 100644 bash-20060316/examples/startup-files/apple/rc delete mode 100644 bash-20060316/examples/startup-files/bash-profile delete mode 100644 bash-20060316/examples/startup-files/bashrc delete mode 100644 bash-20060316/execute_cmd.c delete mode 100644 bash-20060316/execute_cmd.h delete mode 100644 bash-20060316/expr.c delete mode 100644 bash-20060316/externs.h delete mode 100644 bash-20060316/findcmd.c delete mode 100644 bash-20060316/findcmd.h delete mode 100644 bash-20060316/flags.c delete mode 100644 bash-20060316/flags.h delete mode 100644 bash-20060316/general.c delete mode 100644 bash-20060316/general.h delete mode 100644 bash-20060316/hashcmd.c delete mode 100644 bash-20060316/hashcmd.h delete mode 100644 bash-20060316/hashlib.c delete mode 100644 bash-20060316/hashlib.h delete mode 100644 bash-20060316/include/ansi_stdlib.h delete mode 100644 bash-20060316/include/chartypes.h delete mode 100644 bash-20060316/include/filecntl.h delete mode 100644 bash-20060316/include/gettext.h delete mode 100644 bash-20060316/include/maxpath.h delete mode 100644 bash-20060316/include/memalloc.h delete mode 100644 bash-20060316/include/ocache.h delete mode 100644 bash-20060316/include/posixdir.h delete mode 100644 bash-20060316/include/posixjmp.h delete mode 100644 bash-20060316/include/posixstat.h delete mode 100644 bash-20060316/include/posixtime.h delete mode 100644 bash-20060316/include/posixwait.h delete mode 100644 bash-20060316/include/shmbutil.h delete mode 100644 bash-20060316/include/shtty.h delete mode 100644 bash-20060316/include/stdc.h delete mode 100644 bash-20060316/include/systimes.h delete mode 100644 bash-20060316/include/typemax.h delete mode 100644 bash-20060316/include/unionwait.h delete mode 100644 bash-20060316/input.c delete mode 100644 bash-20060316/input.h delete mode 100644 bash-20060316/jobs.c delete mode 100644 bash-20060316/jobs.h delete mode 100644 bash-20060316/lib/doc-support/Makefile.in delete mode 100644 bash-20060316/lib/doc-support/getopt.c delete mode 100644 bash-20060316/lib/doc-support/getopt.h delete mode 100644 bash-20060316/lib/doc-support/getopt1.c delete mode 100644 bash-20060316/lib/doc-support/texindex.c delete mode 100644 bash-20060316/lib/glob/ChangeLog delete mode 100644 bash-20060316/lib/glob/Makefile.in delete mode 100644 bash-20060316/lib/glob/collsyms.h delete mode 100644 bash-20060316/lib/glob/doc/Makefile delete mode 100644 bash-20060316/lib/glob/doc/glob.texi delete mode 100644 bash-20060316/lib/glob/glob.c delete mode 100644 bash-20060316/lib/glob/glob.h delete mode 100644 bash-20060316/lib/glob/glob_loop.c delete mode 100644 bash-20060316/lib/glob/ndir.h delete mode 100644 bash-20060316/lib/glob/sm_loop.c delete mode 100644 bash-20060316/lib/glob/smatch.c delete mode 100644 bash-20060316/lib/glob/strmatch.c delete mode 100644 bash-20060316/lib/glob/strmatch.h delete mode 100644 bash-20060316/lib/glob/xmbsrtowcs.c delete mode 100644 bash-20060316/lib/intl/ChangeLog delete mode 100644 bash-20060316/lib/intl/Makefile.in delete mode 100644 bash-20060316/lib/intl/VERSION delete mode 100644 bash-20060316/lib/intl/bindtextdom.c delete mode 100755 bash-20060316/lib/intl/config.charset delete mode 100644 bash-20060316/lib/intl/dcgettext.c delete mode 100644 bash-20060316/lib/intl/dcigettext.c delete mode 100644 bash-20060316/lib/intl/dcngettext.c delete mode 100644 bash-20060316/lib/intl/dgettext.c delete mode 100644 bash-20060316/lib/intl/dngettext.c delete mode 100644 bash-20060316/lib/intl/eval-plural.h delete mode 100644 bash-20060316/lib/intl/explodename.c delete mode 100644 bash-20060316/lib/intl/finddomain.c delete mode 100644 bash-20060316/lib/intl/gettext.c delete mode 100644 bash-20060316/lib/intl/gettextP.h delete mode 100644 bash-20060316/lib/intl/gmo.h delete mode 100644 bash-20060316/lib/intl/hash-string.h delete mode 100644 bash-20060316/lib/intl/intl-compat.c delete mode 100644 bash-20060316/lib/intl/l10nflist.c delete mode 100644 bash-20060316/lib/intl/libgnuintl.h.in delete mode 100644 bash-20060316/lib/intl/loadinfo.h delete mode 100644 bash-20060316/lib/intl/loadmsgcat.c delete mode 100644 bash-20060316/lib/intl/localcharset.c delete mode 100644 bash-20060316/lib/intl/localcharset.h delete mode 100644 bash-20060316/lib/intl/locale.alias delete mode 100644 bash-20060316/lib/intl/localealias.c delete mode 100644 bash-20060316/lib/intl/localename.c delete mode 100644 bash-20060316/lib/intl/log.c delete mode 100644 bash-20060316/lib/intl/ngettext.c delete mode 100644 bash-20060316/lib/intl/os2compat.c delete mode 100644 bash-20060316/lib/intl/os2compat.h delete mode 100644 bash-20060316/lib/intl/osdep.c delete mode 100644 bash-20060316/lib/intl/plural-exp.c delete mode 100644 bash-20060316/lib/intl/plural-exp.h delete mode 100644 bash-20060316/lib/intl/plural.c delete mode 100644 bash-20060316/lib/intl/plural.y delete mode 100644 bash-20060316/lib/intl/ref-add.sin delete mode 100644 bash-20060316/lib/intl/ref-del.sin delete mode 100644 bash-20060316/lib/intl/relocatable.c delete mode 100644 bash-20060316/lib/intl/relocatable.h delete mode 100644 bash-20060316/lib/intl/textdomain.c delete mode 100644 bash-20060316/lib/malloc/Makefile.in delete mode 100644 bash-20060316/lib/malloc/OLD/gmalloc.c delete mode 100644 bash-20060316/lib/malloc/OLD/ogmalloc.c delete mode 100644 bash-20060316/lib/malloc/OLD/old-nmalloc.c delete mode 100644 bash-20060316/lib/malloc/OLD/omalloc.c delete mode 100644 bash-20060316/lib/malloc/alloca.c delete mode 100644 bash-20060316/lib/malloc/getpagesize.h delete mode 100644 bash-20060316/lib/malloc/i386-alloca.s delete mode 100644 bash-20060316/lib/malloc/imalloc.h delete mode 100644 bash-20060316/lib/malloc/malloc.c delete mode 100644 bash-20060316/lib/malloc/memtest.c delete mode 100644 bash-20060316/lib/malloc/mstats.h delete mode 100644 bash-20060316/lib/malloc/shmalloc.h delete mode 100644 bash-20060316/lib/malloc/stats.c delete mode 100644 bash-20060316/lib/malloc/stub.c delete mode 100644 bash-20060316/lib/malloc/table.c delete mode 100644 bash-20060316/lib/malloc/table.h delete mode 100644 bash-20060316/lib/malloc/trace.c delete mode 100644 bash-20060316/lib/malloc/watch.c delete mode 100644 bash-20060316/lib/malloc/watch.h delete mode 100644 bash-20060316/lib/malloc/x386-alloca.s delete mode 100755 bash-20060316/lib/malloc/xleaktrace delete mode 100644 bash-20060316/lib/malloc/xmalloc.c delete mode 100644 bash-20060316/lib/posixheaders.old/ansi_stdlib.h delete mode 100644 bash-20060316/lib/posixheaders.old/filecntl.h delete mode 100644 bash-20060316/lib/posixheaders.old/memalloc.h delete mode 100644 bash-20060316/lib/posixheaders.old/posixdir.h delete mode 100644 bash-20060316/lib/posixheaders.old/posixjmp.h delete mode 100644 bash-20060316/lib/posixheaders.old/posixstat.h delete mode 100644 bash-20060316/lib/posixheaders.old/stdc.h delete mode 100644 bash-20060316/lib/readline/-i delete mode 100644 bash-20060316/lib/readline/COPYING delete mode 100644 bash-20060316/lib/readline/ChangeLog delete mode 100644 bash-20060316/lib/readline/Makefile.in delete mode 100644 bash-20060316/lib/readline/NEW/xxx-autocomplete delete mode 100644 bash-20060316/lib/readline/README delete mode 100644 bash-20060316/lib/readline/STANDALONE delete mode 120000 bash-20060316/lib/readline/ansi_stdlib.h delete mode 100644 bash-20060316/lib/readline/bind.c delete mode 100644 bash-20060316/lib/readline/callback.c delete mode 100644 bash-20060316/lib/readline/chardefs.h delete mode 100644 bash-20060316/lib/readline/compat.c delete mode 100644 bash-20060316/lib/readline/complete.c delete mode 100644 bash-20060316/lib/readline/display.c delete mode 100644 bash-20060316/lib/readline/doc/Makefile delete mode 100644 bash-20060316/lib/readline/doc/Makefile.in delete mode 120000 bash-20060316/lib/readline/doc/fdl.texi delete mode 100644 bash-20060316/lib/readline/doc/history.3 delete mode 100644 bash-20060316/lib/readline/doc/history.aux delete mode 100644 bash-20060316/lib/readline/doc/history.bt delete mode 100644 bash-20060316/lib/readline/doc/history.cp delete mode 100644 bash-20060316/lib/readline/doc/history.cps delete mode 100644 bash-20060316/lib/readline/doc/history.dvi delete mode 100644 bash-20060316/lib/readline/doc/history.fn delete mode 100644 bash-20060316/lib/readline/doc/history.html delete mode 100644 bash-20060316/lib/readline/doc/history.info delete mode 100644 bash-20060316/lib/readline/doc/history.ky delete mode 100644 bash-20060316/lib/readline/doc/history.log delete mode 100644 bash-20060316/lib/readline/doc/history.pg delete mode 100644 bash-20060316/lib/readline/doc/history.ps delete mode 100644 bash-20060316/lib/readline/doc/history.texi delete mode 100644 bash-20060316/lib/readline/doc/history.toc delete mode 100644 bash-20060316/lib/readline/doc/history.tp delete mode 100644 bash-20060316/lib/readline/doc/history.vr delete mode 100644 bash-20060316/lib/readline/doc/history.vrs delete mode 100644 bash-20060316/lib/readline/doc/hstech.texi delete mode 100644 bash-20060316/lib/readline/doc/hsuser.texi delete mode 100644 bash-20060316/lib/readline/doc/readline.3 delete mode 100644 bash-20060316/lib/readline/doc/readline.dvi delete mode 100644 bash-20060316/lib/readline/doc/readline.html delete mode 100644 bash-20060316/lib/readline/doc/readline.info delete mode 100644 bash-20060316/lib/readline/doc/readline.ps delete mode 100644 bash-20060316/lib/readline/doc/rlman.aux delete mode 100644 bash-20060316/lib/readline/doc/rlman.bt delete mode 100644 bash-20060316/lib/readline/doc/rlman.cp delete mode 100644 bash-20060316/lib/readline/doc/rlman.cps delete mode 100644 bash-20060316/lib/readline/doc/rlman.fn delete mode 100644 bash-20060316/lib/readline/doc/rlman.fns delete mode 100644 bash-20060316/lib/readline/doc/rlman.ky delete mode 100644 bash-20060316/lib/readline/doc/rlman.log delete mode 100644 bash-20060316/lib/readline/doc/rlman.pg delete mode 100644 bash-20060316/lib/readline/doc/rlman.texi delete mode 100644 bash-20060316/lib/readline/doc/rlman.toc delete mode 100644 bash-20060316/lib/readline/doc/rlman.tp delete mode 100644 bash-20060316/lib/readline/doc/rlman.vr delete mode 100644 bash-20060316/lib/readline/doc/rltech.texi delete mode 100644 bash-20060316/lib/readline/doc/rluser.texi delete mode 100644 bash-20060316/lib/readline/doc/rluserman.aux delete mode 100644 bash-20060316/lib/readline/doc/rluserman.bt delete mode 100644 bash-20060316/lib/readline/doc/rluserman.cp delete mode 100644 bash-20060316/lib/readline/doc/rluserman.cps delete mode 100644 bash-20060316/lib/readline/doc/rluserman.dvi delete mode 100644 bash-20060316/lib/readline/doc/rluserman.fn delete mode 100644 bash-20060316/lib/readline/doc/rluserman.fns delete mode 100644 bash-20060316/lib/readline/doc/rluserman.html delete mode 100644 bash-20060316/lib/readline/doc/rluserman.info delete mode 100644 bash-20060316/lib/readline/doc/rluserman.ky delete mode 100644 bash-20060316/lib/readline/doc/rluserman.log delete mode 100644 bash-20060316/lib/readline/doc/rluserman.pg delete mode 100644 bash-20060316/lib/readline/doc/rluserman.ps delete mode 100644 bash-20060316/lib/readline/doc/rluserman.texi delete mode 100644 bash-20060316/lib/readline/doc/rluserman.toc delete mode 100644 bash-20060316/lib/readline/doc/rluserman.tp delete mode 100644 bash-20060316/lib/readline/doc/rluserman.vr delete mode 100644 bash-20060316/lib/readline/doc/rluserman.vrs delete mode 120000 bash-20060316/lib/readline/doc/texi2dvi delete mode 120000 bash-20060316/lib/readline/doc/texi2html delete mode 120000 bash-20060316/lib/readline/doc/texinfo.tex delete mode 100644 bash-20060316/lib/readline/doc/version.texi delete mode 100644 bash-20060316/lib/readline/emacs_keymap.c delete mode 100644 bash-20060316/lib/readline/examples/Inputrc delete mode 100644 bash-20060316/lib/readline/examples/Makefile delete mode 100644 bash-20060316/lib/readline/examples/excallback.c delete mode 100644 bash-20060316/lib/readline/examples/fileman.c delete mode 100644 bash-20060316/lib/readline/examples/histexamp.c delete mode 100644 bash-20060316/lib/readline/examples/manexamp.c delete mode 100644 bash-20060316/lib/readline/examples/rl.c delete mode 100644 bash-20060316/lib/readline/examples/rlcat.c delete mode 100644 bash-20060316/lib/readline/examples/rlptytest.c delete mode 100644 bash-20060316/lib/readline/examples/rltest.c delete mode 100644 bash-20060316/lib/readline/funmap.c delete mode 100644 bash-20060316/lib/readline/histexpand.c delete mode 100644 bash-20060316/lib/readline/histfile.c delete mode 100644 bash-20060316/lib/readline/histlib.h delete mode 100644 bash-20060316/lib/readline/history.c delete mode 100644 bash-20060316/lib/readline/history.h delete mode 100644 bash-20060316/lib/readline/histsearch.c delete mode 100644 bash-20060316/lib/readline/input.c delete mode 100644 bash-20060316/lib/readline/isearch.c delete mode 100644 bash-20060316/lib/readline/keymaps.c delete mode 100644 bash-20060316/lib/readline/keymaps.h delete mode 100644 bash-20060316/lib/readline/kill.c delete mode 100644 bash-20060316/lib/readline/macro.c delete mode 100644 bash-20060316/lib/readline/mbutil.c delete mode 100644 bash-20060316/lib/readline/misc.c delete mode 100644 bash-20060316/lib/readline/nls.c delete mode 100644 bash-20060316/lib/readline/parens.c delete mode 120000 bash-20060316/lib/readline/posixdir.h delete mode 120000 bash-20060316/lib/readline/posixjmp.h delete mode 120000 bash-20060316/lib/readline/posixstat.h delete mode 100644 bash-20060316/lib/readline/readline.c delete mode 100644 bash-20060316/lib/readline/readline.h delete mode 100644 bash-20060316/lib/readline/rlconf.h delete mode 100644 bash-20060316/lib/readline/rldefs.h delete mode 100644 bash-20060316/lib/readline/rlmbutil.h delete mode 100644 bash-20060316/lib/readline/rlprivate.h delete mode 100644 bash-20060316/lib/readline/rlshell.h delete mode 100644 bash-20060316/lib/readline/rlstdc.h delete mode 100644 bash-20060316/lib/readline/rltty.c delete mode 100644 bash-20060316/lib/readline/rltty.h delete mode 100644 bash-20060316/lib/readline/rltypedefs.h delete mode 100644 bash-20060316/lib/readline/rlwinsize.h delete mode 100644 bash-20060316/lib/readline/savestring.c delete mode 100644 bash-20060316/lib/readline/search.c delete mode 100644 bash-20060316/lib/readline/shell.c delete mode 100644 bash-20060316/lib/readline/signals.c delete mode 100644 bash-20060316/lib/readline/tcap.h delete mode 100644 bash-20060316/lib/readline/terminal.c delete mode 100644 bash-20060316/lib/readline/text.c delete mode 120000 bash-20060316/lib/readline/tilde.c delete mode 120000 bash-20060316/lib/readline/tilde.h delete mode 100644 bash-20060316/lib/readline/undo.c delete mode 100644 bash-20060316/lib/readline/util.c delete mode 100644 bash-20060316/lib/readline/vi_keymap.c delete mode 100644 bash-20060316/lib/readline/vi_mode.c delete mode 100644 bash-20060316/lib/readline/xmalloc.c delete mode 100644 bash-20060316/lib/readline/xmalloc.h delete mode 100644 bash-20060316/lib/sh/Makefile.in delete mode 100644 bash-20060316/lib/sh/clktck.c delete mode 100644 bash-20060316/lib/sh/clock.c delete mode 100644 bash-20060316/lib/sh/eaccess.c delete mode 100644 bash-20060316/lib/sh/fmtullong.c delete mode 100644 bash-20060316/lib/sh/fmtulong.c delete mode 100644 bash-20060316/lib/sh/fmtumax.c delete mode 100644 bash-20060316/lib/sh/getcwd.c delete mode 100644 bash-20060316/lib/sh/getenv.c delete mode 100644 bash-20060316/lib/sh/inet_aton.c delete mode 100644 bash-20060316/lib/sh/itos.c delete mode 100644 bash-20060316/lib/sh/mailstat.c delete mode 100644 bash-20060316/lib/sh/makepath.c delete mode 100644 bash-20060316/lib/sh/memset.c delete mode 100644 bash-20060316/lib/sh/mktime.c delete mode 100644 bash-20060316/lib/sh/netconn.c delete mode 100644 bash-20060316/lib/sh/netopen.c delete mode 100644 bash-20060316/lib/sh/oslib.c delete mode 100644 bash-20060316/lib/sh/pathcanon.c delete mode 100644 bash-20060316/lib/sh/pathphys.c delete mode 100644 bash-20060316/lib/sh/rename.c delete mode 100644 bash-20060316/lib/sh/setlinebuf.c delete mode 100644 bash-20060316/lib/sh/shmatch.c delete mode 100644 bash-20060316/lib/sh/shquote.c delete mode 100644 bash-20060316/lib/sh/shtty.c delete mode 100644 bash-20060316/lib/sh/snprintf.c delete mode 100644 bash-20060316/lib/sh/spell.c delete mode 100644 bash-20060316/lib/sh/strcasecmp.c delete mode 100644 bash-20060316/lib/sh/strerror.c delete mode 100644 bash-20060316/lib/sh/strftime.c delete mode 100644 bash-20060316/lib/sh/strindex.c delete mode 100644 bash-20060316/lib/sh/stringlist.c delete mode 100644 bash-20060316/lib/sh/stringvec.c delete mode 100644 bash-20060316/lib/sh/strnlen.c delete mode 100644 bash-20060316/lib/sh/strpbrk.c delete mode 100644 bash-20060316/lib/sh/strstr.c delete mode 100644 bash-20060316/lib/sh/strtod.c delete mode 100644 bash-20060316/lib/sh/strtoimax.c delete mode 100644 bash-20060316/lib/sh/strtol.c delete mode 100644 bash-20060316/lib/sh/strtoll.c delete mode 100644 bash-20060316/lib/sh/strtoul.c delete mode 100644 bash-20060316/lib/sh/strtoull.c delete mode 100644 bash-20060316/lib/sh/strtoumax.c delete mode 100644 bash-20060316/lib/sh/strtrans.c delete mode 100644 bash-20060316/lib/sh/times.c delete mode 100644 bash-20060316/lib/sh/timeval.c delete mode 100644 bash-20060316/lib/sh/tmpfile.c delete mode 100644 bash-20060316/lib/sh/vprint.c delete mode 100644 bash-20060316/lib/sh/winsize.c delete mode 100644 bash-20060316/lib/sh/xstrchr.c delete mode 100644 bash-20060316/lib/sh/zcatfd.c delete mode 100644 bash-20060316/lib/sh/zread.c delete mode 100644 bash-20060316/lib/sh/zwrite.c delete mode 100644 bash-20060316/lib/termcap/Makefile.in delete mode 100644 bash-20060316/lib/termcap/grot/COPYING delete mode 100644 bash-20060316/lib/termcap/grot/ChangeLog delete mode 100644 bash-20060316/lib/termcap/grot/INSTALL delete mode 100644 bash-20060316/lib/termcap/grot/Makefile.in delete mode 100644 bash-20060316/lib/termcap/grot/NEWS delete mode 100644 bash-20060316/lib/termcap/grot/README delete mode 100755 bash-20060316/lib/termcap/grot/configure delete mode 100644 bash-20060316/lib/termcap/grot/configure.in delete mode 100644 bash-20060316/lib/termcap/grot/termcap.info delete mode 100644 bash-20060316/lib/termcap/grot/termcap.info-1 delete mode 100644 bash-20060316/lib/termcap/grot/termcap.info-2 delete mode 100644 bash-20060316/lib/termcap/grot/termcap.info-3 delete mode 100644 bash-20060316/lib/termcap/grot/termcap.info-4 delete mode 100644 bash-20060316/lib/termcap/grot/termcap.src delete mode 100644 bash-20060316/lib/termcap/grot/termcap.texi delete mode 100644 bash-20060316/lib/termcap/grot/texinfo.tex delete mode 100644 bash-20060316/lib/termcap/ltcap.h delete mode 100644 bash-20060316/lib/termcap/termcap.c delete mode 100644 bash-20060316/lib/termcap/termcap.h delete mode 100644 bash-20060316/lib/termcap/tparam.c delete mode 100644 bash-20060316/lib/termcap/version.c delete mode 100644 bash-20060316/lib/tilde/ChangeLog delete mode 100644 bash-20060316/lib/tilde/Makefile.in delete mode 100644 bash-20060316/lib/tilde/README delete mode 100644 bash-20060316/lib/tilde/doc/Makefile delete mode 100644 bash-20060316/lib/tilde/doc/tilde.texi delete mode 100644 bash-20060316/lib/tilde/shell.c delete mode 100644 bash-20060316/lib/tilde/tilde.c delete mode 100644 bash-20060316/lib/tilde/tilde.h delete mode 100644 bash-20060316/list.c delete mode 100644 bash-20060316/locale.c delete mode 100644 bash-20060316/mailcheck.c delete mode 100644 bash-20060316/mailcheck.h delete mode 100644 bash-20060316/make_cmd.c delete mode 100644 bash-20060316/make_cmd.h delete mode 100644 bash-20060316/mksyntax.c delete mode 100644 bash-20060316/nojobs.c delete mode 100644 bash-20060316/parse.y delete mode 100644 bash-20060316/parser.h delete mode 100644 bash-20060316/patchlevel.h delete mode 100644 bash-20060316/pathexp.c delete mode 100644 bash-20060316/pathexp.h delete mode 100644 bash-20060316/pathnames.h.in delete mode 100644 bash-20060316/pcomplete.c delete mode 100644 bash-20060316/pcomplete.h delete mode 100644 bash-20060316/pcomplib.c delete mode 100644 bash-20060316/po/LINGUAS delete mode 100644 bash-20060316/po/Makefile.in.in delete mode 100644 bash-20060316/po/Makevars delete mode 100644 bash-20060316/po/Makevars.template delete mode 100644 bash-20060316/po/POTFILES.in delete mode 100644 bash-20060316/po/README delete mode 100644 bash-20060316/po/Rules-builtins delete mode 100644 bash-20060316/po/Rules-quot delete mode 100644 bash-20060316/po/bash.pot delete mode 100644 bash-20060316/po/boldquot.sed delete mode 100644 bash-20060316/po/en@boldquot.gmo delete mode 100644 bash-20060316/po/en@boldquot.header delete mode 100644 bash-20060316/po/en@boldquot.po delete mode 100644 bash-20060316/po/en@quot.gmo delete mode 100644 bash-20060316/po/en@quot.header delete mode 100644 bash-20060316/po/en@quot.po delete mode 100644 bash-20060316/po/insert-header.sin delete mode 100644 bash-20060316/po/quot.sed delete mode 100644 bash-20060316/po/readline.po delete mode 100644 bash-20060316/po/remove-potcdate.sin delete mode 100644 bash-20060316/po/ru.po delete mode 100644 bash-20060316/print_cmd.c delete mode 100644 bash-20060316/quit.h delete mode 100644 bash-20060316/redir.c delete mode 100644 bash-20060316/redir.h delete mode 100644 bash-20060316/shell.c delete mode 100644 bash-20060316/shell.h delete mode 100644 bash-20060316/sig.c delete mode 100644 bash-20060316/sig.h delete mode 100644 bash-20060316/siglist.c delete mode 100644 bash-20060316/siglist.h delete mode 100644 bash-20060316/stringlib.c delete mode 100644 bash-20060316/subst.c delete mode 100644 bash-20060316/subst.h delete mode 100644 bash-20060316/support/Makefile.in delete mode 100644 bash-20060316/support/SYMLINKS delete mode 100644 bash-20060316/support/bash.icon.ps delete mode 100644 bash-20060316/support/bash.install delete mode 100644 bash-20060316/support/bash.xbm delete mode 100644 bash-20060316/support/bash.xv delete mode 100644 bash-20060316/support/bashbug.sh delete mode 100644 bash-20060316/support/bashversion.c delete mode 100755 bash-20060316/support/config.guess delete mode 100755 bash-20060316/support/config.rpath delete mode 100755 bash-20060316/support/config.sub delete mode 100644 bash-20060316/support/deblank.sh delete mode 100644 bash-20060316/support/endian.c delete mode 100755 bash-20060316/support/fixlinks delete mode 100755 bash-20060316/support/install.sh delete mode 100755 bash-20060316/support/mail-shell delete mode 100644 bash-20060316/support/man2html.c delete mode 100644 bash-20060316/support/memtest.c delete mode 100755 bash-20060316/support/missing delete mode 100755 bash-20060316/support/mk-takehome delete mode 100755 bash-20060316/support/mkclone delete mode 100644 bash-20060316/support/mkconffiles delete mode 100755 bash-20060316/support/mkdep delete mode 100755 bash-20060316/support/mkdirs delete mode 100755 bash-20060316/support/mkdist delete mode 100755 bash-20060316/support/mkdocdist delete mode 100755 bash-20060316/support/mkinstalldirs delete mode 100644 bash-20060316/support/mknewvers.sh delete mode 100644 bash-20060316/support/mksignames.c delete mode 100755 bash-20060316/support/mksnap delete mode 100644 bash-20060316/support/mkversion.sh delete mode 100644 bash-20060316/support/printenv.c delete mode 100755 bash-20060316/support/printenv.sh delete mode 100644 bash-20060316/support/recho.c delete mode 100644 bash-20060316/support/rlvers.sh delete mode 100755 bash-20060316/support/shobj-conf delete mode 100644 bash-20060316/support/signames.c delete mode 100755 bash-20060316/support/texi2dvi delete mode 100755 bash-20060316/support/texi2dvi-0.43 delete mode 100755 bash-20060316/support/texi2dvi-0.46 delete mode 100755 bash-20060316/support/texi2dvi-1.14 delete mode 100755 bash-20060316/support/texi2html delete mode 100755 bash-20060316/support/texi2html-1.64 delete mode 100755 bash-20060316/support/xenix-link.sh delete mode 100644 bash-20060316/support/zecho.c delete mode 100644 bash-20060316/syntax.h delete mode 100644 bash-20060316/test.c delete mode 100644 bash-20060316/test.h delete mode 100644 bash-20060316/tests/-i delete mode 100644 bash-20060316/tests/README delete mode 100755 bash-20060316/tests/RUN-ONE-TEST delete mode 100755 bash-20060316/tests/RUN-TEST-SCRIPT delete mode 100644 bash-20060316/tests/alias.right delete mode 100644 bash-20060316/tests/alias.tests delete mode 100644 bash-20060316/tests/appendop.right delete mode 100644 bash-20060316/tests/appendop.tests delete mode 100644 bash-20060316/tests/arith-for.right delete mode 100644 bash-20060316/tests/arith-for.tests delete mode 100644 bash-20060316/tests/arith.right delete mode 100644 bash-20060316/tests/arith.tests delete mode 100644 bash-20060316/tests/arith1.sub delete mode 100644 bash-20060316/tests/arith2.sub delete mode 100755 bash-20060316/tests/array-at-star delete mode 100644 bash-20060316/tests/array.right delete mode 100644 bash-20060316/tests/array.tests delete mode 100644 bash-20060316/tests/array1.sub delete mode 100644 bash-20060316/tests/array2.right delete mode 100644 bash-20060316/tests/array2.sub delete mode 100644 bash-20060316/tests/array3.sub delete mode 100644 bash-20060316/tests/array4.sub delete mode 100644 bash-20060316/tests/braces.right delete mode 100644 bash-20060316/tests/braces.tests delete mode 100644 bash-20060316/tests/builtins.right delete mode 100644 bash-20060316/tests/builtins.tests delete mode 100644 bash-20060316/tests/builtins1.sub delete mode 100644 bash-20060316/tests/builtins2.sub delete mode 100644 bash-20060316/tests/cond.right delete mode 100755 bash-20060316/tests/cond.tests delete mode 100644 bash-20060316/tests/cprint.right delete mode 100644 bash-20060316/tests/cprint.tests delete mode 100644 bash-20060316/tests/cracauer-testsuite/DOC delete mode 100644 bash-20060316/tests/cracauer-testsuite/Makefile delete mode 100644 bash-20060316/tests/cracauer-testsuite/OBSERVATIONS delete mode 100644 bash-20060316/tests/cracauer-testsuite/QUESTIONS delete mode 100644 bash-20060316/tests/cracauer-testsuite/catcher.c delete mode 100644 bash-20060316/tests/cracauer-testsuite/lib.csh delete mode 100644 bash-20060316/tests/cracauer-testsuite/lib.sh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test01.csh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test01.sh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test02.csh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test02.sh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test03.sh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test04.sh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test05.sh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test06.sh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test07.csh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test07.sh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test08.sh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test09.sh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test10.sh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test11.sh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test12.sh delete mode 100644 bash-20060316/tests/cracauer-testsuite/test13.sh delete mode 100644 bash-20060316/tests/dbg-support.right delete mode 100644 bash-20060316/tests/dbg-support.sub delete mode 100755 bash-20060316/tests/dbg-support.tests delete mode 100644 bash-20060316/tests/dbg-support2.right delete mode 100755 bash-20060316/tests/dbg-support2.tests delete mode 100755 bash-20060316/tests/dollar-at-star delete mode 100644 bash-20060316/tests/dollar-at1.sub delete mode 100644 bash-20060316/tests/dollar-at2.sub delete mode 100644 bash-20060316/tests/dollar-star1.sub delete mode 100644 bash-20060316/tests/dollar-star2.sub delete mode 100644 bash-20060316/tests/dollar.right delete mode 100644 bash-20060316/tests/dstack.right delete mode 100644 bash-20060316/tests/dstack.tests delete mode 100644 bash-20060316/tests/dstack2.right delete mode 100644 bash-20060316/tests/dstack2.tests delete mode 100644 bash-20060316/tests/errors.right delete mode 100644 bash-20060316/tests/errors.tests delete mode 100644 bash-20060316/tests/exec.right delete mode 100755 bash-20060316/tests/exec1.sub delete mode 100644 bash-20060316/tests/exec2.sub delete mode 100644 bash-20060316/tests/exec3.sub delete mode 100644 bash-20060316/tests/exec4.sub delete mode 100644 bash-20060316/tests/exec5.sub delete mode 100644 bash-20060316/tests/exec6.sub delete mode 100644 bash-20060316/tests/exec7.sub delete mode 100644 bash-20060316/tests/execscript delete mode 100644 bash-20060316/tests/exp-tests delete mode 100644 bash-20060316/tests/exp.right delete mode 100644 bash-20060316/tests/extglob.right delete mode 100644 bash-20060316/tests/extglob.tests delete mode 100644 bash-20060316/tests/extglob1.sub delete mode 100644 bash-20060316/tests/extglob2.right delete mode 100755 bash-20060316/tests/extglob2.tests delete mode 100644 bash-20060316/tests/extglob3.right delete mode 100644 bash-20060316/tests/extglob3.tests delete mode 100644 bash-20060316/tests/func.right delete mode 100644 bash-20060316/tests/func.tests delete mode 100644 bash-20060316/tests/func1.sub delete mode 100644 bash-20060316/tests/func2.sub delete mode 100644 bash-20060316/tests/func3.sub delete mode 100644 bash-20060316/tests/getopts.right delete mode 100644 bash-20060316/tests/getopts.tests delete mode 100644 bash-20060316/tests/getopts1.sub delete mode 100644 bash-20060316/tests/getopts2.sub delete mode 100644 bash-20060316/tests/getopts3.sub delete mode 100644 bash-20060316/tests/getopts4.sub delete mode 100644 bash-20060316/tests/getopts5.sub delete mode 100644 bash-20060316/tests/getopts6.sub delete mode 100644 bash-20060316/tests/getopts7.sub delete mode 100644 bash-20060316/tests/glob-test delete mode 100644 bash-20060316/tests/glob.right delete mode 100644 bash-20060316/tests/glob1.sub delete mode 100644 bash-20060316/tests/heredoc.right delete mode 100644 bash-20060316/tests/heredoc.tests delete mode 100644 bash-20060316/tests/herestr.right delete mode 100644 bash-20060316/tests/herestr.tests delete mode 100644 bash-20060316/tests/histexp.right delete mode 100644 bash-20060316/tests/histexp.tests delete mode 100644 bash-20060316/tests/history.list delete mode 100644 bash-20060316/tests/history.right delete mode 100644 bash-20060316/tests/history.tests delete mode 100644 bash-20060316/tests/ifs-posix.right delete mode 100644 bash-20060316/tests/ifs-posix.tests delete mode 100644 bash-20060316/tests/ifs.right delete mode 100644 bash-20060316/tests/ifs.tests delete mode 100644 bash-20060316/tests/input-line.sh delete mode 100644 bash-20060316/tests/input-line.sub delete mode 100644 bash-20060316/tests/input.right delete mode 100644 bash-20060316/tests/intl.right delete mode 100644 bash-20060316/tests/intl.tests delete mode 100644 bash-20060316/tests/invert.right delete mode 100644 bash-20060316/tests/invert.tests delete mode 100644 bash-20060316/tests/iquote.right delete mode 100644 bash-20060316/tests/iquote.tests delete mode 100644 bash-20060316/tests/jobs.right delete mode 100644 bash-20060316/tests/jobs.tests delete mode 100644 bash-20060316/tests/jobs1.sub delete mode 100644 bash-20060316/tests/jobs2.sub delete mode 100644 bash-20060316/tests/jobs3.sub delete mode 100644 bash-20060316/tests/jobs4.sub delete mode 100644 bash-20060316/tests/misc/dev-tcp.tests delete mode 100644 bash-20060316/tests/misc/input-line-2.sh delete mode 100644 bash-20060316/tests/misc/minus-e delete mode 100644 bash-20060316/tests/misc/minus-e.right delete mode 100644 bash-20060316/tests/misc/perf-script delete mode 100644 bash-20060316/tests/misc/perftest delete mode 100644 bash-20060316/tests/misc/read-nchars-int.tests delete mode 100644 bash-20060316/tests/misc/read-nchars.tests delete mode 100644 bash-20060316/tests/misc/redir-t2.sh delete mode 100644 bash-20060316/tests/misc/regress/README delete mode 100644 bash-20060316/tests/misc/regress/geoff.post delete mode 100644 bash-20060316/tests/misc/regress/getdate.mk delete mode 100644 bash-20060316/tests/misc/regress/getdate.y delete mode 100644 bash-20060316/tests/misc/regress/shx delete mode 100644 bash-20060316/tests/misc/regress/shx1 delete mode 100644 bash-20060316/tests/misc/regress/shx2 delete mode 100644 bash-20060316/tests/misc/regress/shx3 delete mode 100644 bash-20060316/tests/misc/regress/shx4 delete mode 100644 bash-20060316/tests/misc/regress/shx5 delete mode 100644 bash-20060316/tests/misc/regress/shx7 delete mode 100644 bash-20060316/tests/misc/regress/shx8 delete mode 100644 bash-20060316/tests/misc/run-input-test-2 delete mode 100644 bash-20060316/tests/misc/run-minus-e delete mode 100755 bash-20060316/tests/misc/run-r2.sh delete mode 100755 bash-20060316/tests/misc/sigint-1.sh delete mode 100755 bash-20060316/tests/misc/sigint-2.sh delete mode 100755 bash-20060316/tests/misc/sigint-3.sh delete mode 100755 bash-20060316/tests/misc/sigint-4.sh delete mode 100644 bash-20060316/tests/misc/test-minus-e.1 delete mode 100644 bash-20060316/tests/misc/test-minus-e.2 delete mode 100644 bash-20060316/tests/misc/test.patmatch delete mode 100644 bash-20060316/tests/misc/wait-bg.tests delete mode 100644 bash-20060316/tests/more-exp.right delete mode 100644 bash-20060316/tests/more-exp.tests delete mode 100644 bash-20060316/tests/new-exp.right delete mode 100644 bash-20060316/tests/new-exp.tests delete mode 100644 bash-20060316/tests/new-exp1.sub delete mode 100644 bash-20060316/tests/new-exp2.sub delete mode 100644 bash-20060316/tests/new-exp3.sub delete mode 100644 bash-20060316/tests/new-exp4.sub delete mode 100644 bash-20060316/tests/new-exp5.sub delete mode 100644 bash-20060316/tests/nquote.right delete mode 100644 bash-20060316/tests/nquote.tests delete mode 100644 bash-20060316/tests/nquote1.right delete mode 100644 bash-20060316/tests/nquote1.tests delete mode 100644 bash-20060316/tests/nquote2.right delete mode 100644 bash-20060316/tests/nquote2.tests delete mode 100644 bash-20060316/tests/nquote3.right delete mode 100644 bash-20060316/tests/nquote3.tests delete mode 100644 bash-20060316/tests/nquote4.right delete mode 100644 bash-20060316/tests/nquote4.tests delete mode 100644 bash-20060316/tests/posix-ifs.sh delete mode 100644 bash-20060316/tests/posix2.right delete mode 100644 bash-20060316/tests/posix2.tests delete mode 100644 bash-20060316/tests/posixpat.right delete mode 100644 bash-20060316/tests/posixpat.tests delete mode 100644 bash-20060316/tests/prec.right delete mode 100755 bash-20060316/tests/precedence delete mode 100644 bash-20060316/tests/printf.right delete mode 100644 bash-20060316/tests/printf.tests delete mode 100644 bash-20060316/tests/printf1.sub delete mode 100644 bash-20060316/tests/quote.right delete mode 100644 bash-20060316/tests/quote.tests delete mode 100644 bash-20060316/tests/read.right delete mode 100644 bash-20060316/tests/read.tests delete mode 100644 bash-20060316/tests/read1.sub delete mode 100644 bash-20060316/tests/read2.sub delete mode 100644 bash-20060316/tests/read3.sub delete mode 100644 bash-20060316/tests/read4.sub delete mode 100644 bash-20060316/tests/read5.sub delete mode 100644 bash-20060316/tests/redir.right delete mode 100644 bash-20060316/tests/redir.tests delete mode 100644 bash-20060316/tests/redir1.sub delete mode 100644 bash-20060316/tests/redir2.sub delete mode 100644 bash-20060316/tests/redir3.in1 delete mode 100644 bash-20060316/tests/redir3.in2 delete mode 100644 bash-20060316/tests/redir3.sub delete mode 100644 bash-20060316/tests/redir4.in1 delete mode 100644 bash-20060316/tests/redir4.sub delete mode 100644 bash-20060316/tests/redir5.sub delete mode 100644 bash-20060316/tests/redir6.sub delete mode 100644 bash-20060316/tests/redir7.sub delete mode 100644 bash-20060316/tests/rhs-exp.right delete mode 100644 bash-20060316/tests/rhs-exp.tests delete mode 100644 bash-20060316/tests/rsh.right delete mode 100644 bash-20060316/tests/rsh.tests delete mode 100644 bash-20060316/tests/run-alias delete mode 100644 bash-20060316/tests/run-all delete mode 100644 bash-20060316/tests/run-appendop delete mode 100644 bash-20060316/tests/run-arith delete mode 100644 bash-20060316/tests/run-arith-for delete mode 100644 bash-20060316/tests/run-array delete mode 100644 bash-20060316/tests/run-array2 delete mode 100644 bash-20060316/tests/run-braces delete mode 100644 bash-20060316/tests/run-builtins delete mode 100644 bash-20060316/tests/run-cond delete mode 100644 bash-20060316/tests/run-cprint delete mode 100755 bash-20060316/tests/run-dbg-support delete mode 100755 bash-20060316/tests/run-dbg-support2 delete mode 100644 bash-20060316/tests/run-dirstack delete mode 100644 bash-20060316/tests/run-dollars delete mode 100644 bash-20060316/tests/run-errors delete mode 100644 bash-20060316/tests/run-execscript delete mode 100644 bash-20060316/tests/run-exp-tests delete mode 100644 bash-20060316/tests/run-extglob delete mode 100644 bash-20060316/tests/run-extglob2 delete mode 100644 bash-20060316/tests/run-extglob3 delete mode 100644 bash-20060316/tests/run-func delete mode 100644 bash-20060316/tests/run-getopts delete mode 100644 bash-20060316/tests/run-glob-test delete mode 100644 bash-20060316/tests/run-gprof delete mode 100644 bash-20060316/tests/run-heredoc delete mode 100644 bash-20060316/tests/run-herestr delete mode 100644 bash-20060316/tests/run-histexpand delete mode 100644 bash-20060316/tests/run-history delete mode 100644 bash-20060316/tests/run-ifs delete mode 100644 bash-20060316/tests/run-ifs-posix delete mode 100644 bash-20060316/tests/run-input-test delete mode 100644 bash-20060316/tests/run-intl delete mode 100644 bash-20060316/tests/run-invert delete mode 100644 bash-20060316/tests/run-iquote delete mode 100644 bash-20060316/tests/run-jobs delete mode 100644 bash-20060316/tests/run-minimal delete mode 100644 bash-20060316/tests/run-more-exp delete mode 100644 bash-20060316/tests/run-new-exp delete mode 100644 bash-20060316/tests/run-nquote delete mode 100644 bash-20060316/tests/run-nquote1 delete mode 100644 bash-20060316/tests/run-nquote2 delete mode 100644 bash-20060316/tests/run-nquote3 delete mode 100644 bash-20060316/tests/run-nquote4 delete mode 100644 bash-20060316/tests/run-posix2 delete mode 100644 bash-20060316/tests/run-posixpat delete mode 100644 bash-20060316/tests/run-precedence delete mode 100644 bash-20060316/tests/run-printf delete mode 100644 bash-20060316/tests/run-quote delete mode 100644 bash-20060316/tests/run-read delete mode 100644 bash-20060316/tests/run-redir delete mode 100644 bash-20060316/tests/run-rhs-exp delete mode 100644 bash-20060316/tests/run-rsh delete mode 100644 bash-20060316/tests/run-set-e delete mode 100755 bash-20060316/tests/run-set-x delete mode 100644 bash-20060316/tests/run-shopt delete mode 100644 bash-20060316/tests/run-strip delete mode 100644 bash-20060316/tests/run-test delete mode 100644 bash-20060316/tests/run-tilde delete mode 100644 bash-20060316/tests/run-tilde2 delete mode 100644 bash-20060316/tests/run-trap delete mode 100644 bash-20060316/tests/run-type delete mode 100644 bash-20060316/tests/run-varenv delete mode 100644 bash-20060316/tests/set-e-test delete mode 100644 bash-20060316/tests/set-e.right delete mode 100644 bash-20060316/tests/set-x.right delete mode 100755 bash-20060316/tests/set-x.tests delete mode 100644 bash-20060316/tests/shopt.right delete mode 100644 bash-20060316/tests/shopt.tests delete mode 100644 bash-20060316/tests/source1.sub delete mode 100644 bash-20060316/tests/source2.sub delete mode 100644 bash-20060316/tests/source3.sub delete mode 100644 bash-20060316/tests/source4.sub delete mode 100644 bash-20060316/tests/source5.sub delete mode 100644 bash-20060316/tests/strip.right delete mode 100644 bash-20060316/tests/strip.tests delete mode 100644 bash-20060316/tests/test.right delete mode 100644 bash-20060316/tests/test.tests delete mode 100644 bash-20060316/tests/tilde.right delete mode 100644 bash-20060316/tests/tilde.tests delete mode 100644 bash-20060316/tests/tilde2.right delete mode 100644 bash-20060316/tests/tilde2.tests delete mode 100644 bash-20060316/tests/time.tests delete mode 100644 bash-20060316/tests/trap.right delete mode 100644 bash-20060316/tests/trap.tests delete mode 100755 bash-20060316/tests/trap1.sub delete mode 100755 bash-20060316/tests/trap2.sub delete mode 100755 bash-20060316/tests/trap2a.sub delete mode 100644 bash-20060316/tests/type.right delete mode 100644 bash-20060316/tests/type.tests delete mode 100644 bash-20060316/tests/varenv.right delete mode 100644 bash-20060316/tests/varenv.sh delete mode 100644 bash-20060316/tests/varenv1.sub delete mode 100644 bash-20060316/tests/varenv2.sub delete mode 100644 bash-20060316/tests/version delete mode 100644 bash-20060316/tests/version.mini delete mode 100644 bash-20060316/trap.c delete mode 100644 bash-20060316/trap.h delete mode 100644 bash-20060316/unwind_prot.c delete mode 100644 bash-20060316/unwind_prot.h delete mode 100644 bash-20060316/variables.c delete mode 100644 bash-20060316/variables.h delete mode 100644 bash-20060316/version.c delete mode 100644 bash-20060316/xmalloc.c delete mode 100644 bash-20060316/xmalloc.h delete mode 100644 copyright-comment delete mode 100644 copyright-def delete mode 100644 copyright-makefile delete mode 100644 ddd1 delete mode 100644 display-ctrl-r.patch delete mode 100644 jobs-patch delete mode 100644 jobs.c.20080704 delete mode 100644 jobs.c.patch delete mode 100644 lib/malloc/malloc.c.bad delete mode 100644 lib/readline/copyright-comment delete mode 100644 lib/readline/copyright-history delete mode 100644 lib/readline/ddd1 delete mode 100644 lib/readline/menucomp delete mode 100644 lib/sh/shmatch.c.debug delete mode 100644 mksyntax.c.gettext delete mode 100644 parse.y.debug delete mode 100644 parse.y.regexp delete mode 100644 shell-compat.patch delete mode 100644 tests/core delete mode 100644 tests/gmon.out diff --git a/#pcomplete.c# b/#pcomplete.c# deleted file mode 100644 index 2bca3042d..000000000 --- a/#pcomplete.c# +++ /dev/null @@ -1,1448 +0,0 @@ -/* pcomplete.c - functions to generate lists of matches for programmable - completion. */ - -/* Copyright (C) 1999-2008 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 (PROGRAMMABLE_COMPLETION) - -#include "bashtypes.h" -#include "posixstat.h" - -#if defined (HAVE_UNISTD_H) -# include -#endif - -#include - -#if defined (PREFER_STDARG) -# include -#else -# include -#endif - -#include -#include "bashansi.h" -#include "bashintl.h" - -#include "shell.h" -#include "pcomplete.h" -#include "alias.h" -#include "bashline.h" -#include "execute_cmd.h" -#include "pathexp.h" - -#if defined (JOB_CONTROL) -# include "jobs.h" -#endif - -#if !defined (NSIG) -# include "trap.h" -#endif - -#include "builtins.h" -#include "builtins/common.h" - -#include -#include - -#include -#include -#include - -#ifdef STRDUP -# undef STRDUP -#endif -#define STRDUP(x) ((x) ? savestring (x) : (char *)NULL) - -typedef SHELL_VAR **SVFUNC (); - -#ifndef HAVE_STRPBRK -extern char *strpbrk __P((char *, char *)); -#endif - -extern int array_needs_making; -extern STRING_INT_ALIST word_token_alist[]; -extern char *signal_names[]; - -#if defined (DEBUG) -#if defined (PREFER_STDARG) -static void debug_printf (const char *, ...) __attribute__((__format__ (printf, 1, 2))); -#endif -#endif /* DEBUG */ - -static int it_init_joblist __P((ITEMLIST *, int)); - -static int it_init_aliases __P((ITEMLIST *)); -static int it_init_arrayvars __P((ITEMLIST *)); -static int it_init_bindings __P((ITEMLIST *)); -static int it_init_builtins __P((ITEMLIST *)); -static int it_init_disabled __P((ITEMLIST *)); -static int it_init_enabled __P((ITEMLIST *)); -static int it_init_exported __P((ITEMLIST *)); -static int it_init_functions __P((ITEMLIST *)); -static int it_init_hostnames __P((ITEMLIST *)); -static int it_init_jobs __P((ITEMLIST *)); -static int it_init_running __P((ITEMLIST *)); -static int it_init_stopped __P((ITEMLIST *)); -static int it_init_keywords __P((ITEMLIST *)); -static int it_init_signals __P((ITEMLIST *)); -static int it_init_variables __P((ITEMLIST *)); -static int it_init_setopts __P((ITEMLIST *)); -static int it_init_shopts __P((ITEMLIST *)); - -static int shouldexp_filterpat __P((char *)); -static char *preproc_filterpat __P((char *, char *)); - -static void init_itemlist_from_varlist __P((ITEMLIST *, SVFUNC *)); - -static STRINGLIST *gen_matches_from_itemlist __P((ITEMLIST *, const char *)); -static STRINGLIST *gen_action_completions __P((COMPSPEC *, const char *)); -static STRINGLIST *gen_globpat_matches __P((COMPSPEC *, const char *)); -static STRINGLIST *gen_wordlist_matches __P((COMPSPEC *, const char *)); -static STRINGLIST *gen_shell_function_matches __P((COMPSPEC *, const char *, - char *, int, WORD_LIST *, - int, int)); -static STRINGLIST *gen_command_matches __P((COMPSPEC *, const char *, char *, - int, WORD_LIST *, int, int)); - -static char *pcomp_filename_completion_function __P((const char *, int)); - -#if defined (ARRAY_VARS) -static SHELL_VAR *bind_comp_words __P((WORD_LIST *)); -#endif -static void bind_compfunc_variables __P((char *, int, WORD_LIST *, int, int)); -static void unbind_compfunc_variables __P((int)); -static WORD_LIST *build_arg_list __P((char *, const char *, WORD_LIST *, int)); -static WORD_LIST *command_line_to_word_list __P((char *, int, int, int *, int *)); - -#ifdef DEBUG -static int progcomp_debug = 0; -#endif - -int prog_completion_enabled = 1; - -/* These are used to manage the arrays of strings for possible completions. */ -ITEMLIST it_aliases = { 0, it_init_aliases, (STRINGLIST *)0 }; -ITEMLIST it_arrayvars = { LIST_DYNAMIC, it_init_arrayvars, (STRINGLIST *)0 }; -ITEMLIST it_bindings = { 0, it_init_bindings, (STRINGLIST *)0 }; -ITEMLIST it_builtins = { 0, it_init_builtins, (STRINGLIST *)0 }; -ITEMLIST it_commands = { LIST_DYNAMIC }; /* unused */ -ITEMLIST it_directories = { LIST_DYNAMIC }; /* unused */ -ITEMLIST it_disabled = { 0, it_init_disabled, (STRINGLIST *)0 }; -ITEMLIST it_enabled = { 0, it_init_enabled, (STRINGLIST *)0 }; -ITEMLIST it_exports = { LIST_DYNAMIC, it_init_exported, (STRINGLIST *)0 }; -ITEMLIST it_files = { LIST_DYNAMIC }; /* unused */ -ITEMLIST it_functions = { 0, it_init_functions, (STRINGLIST *)0 }; -ITEMLIST it_hostnames = { LIST_DYNAMIC, it_init_hostnames, (STRINGLIST *)0 }; -ITEMLIST it_groups = { LIST_DYNAMIC }; /* unused */ -ITEMLIST it_jobs = { LIST_DYNAMIC, it_init_jobs, (STRINGLIST *)0 }; -ITEMLIST it_keywords = { 0, it_init_keywords, (STRINGLIST *)0 }; -ITEMLIST it_running = { LIST_DYNAMIC, it_init_running, (STRINGLIST *)0 }; -ITEMLIST it_services = { LIST_DYNAMIC }; /* unused */ -ITEMLIST it_setopts = { 0, it_init_setopts, (STRINGLIST *)0 }; -ITEMLIST it_shopts = { 0, it_init_shopts, (STRINGLIST *)0 }; -ITEMLIST it_signals = { 0, it_init_signals, (STRINGLIST *)0 }; -ITEMLIST it_stopped = { LIST_DYNAMIC, it_init_stopped, (STRINGLIST *)0 }; -ITEMLIST it_users = { LIST_DYNAMIC }; /* unused */ -ITEMLIST it_variables = { LIST_DYNAMIC, it_init_variables, (STRINGLIST *)0 }; - -COMPSPEC *pcomp_curcs; -const char *pcomp_curcmd; - -#ifdef DEBUG -/* Debugging code */ -static void -#if defined (PREFER_STDARG) -debug_printf (const char *format, ...) -#else -debug_printf (format, va_alist) - const char *format; - va_dcl -#endif -{ - va_list args; - - if (progcomp_debug == 0) - return; - - SH_VA_START (args, format); - - fprintf (stdout, "DEBUG: "); - vfprintf (stdout, format, args); - fprintf (stdout, "\n"); - - rl_on_new_line (); - - va_end (args); -} -#endif - -/* Functions to manage the item lists */ - -void -set_itemlist_dirty (it) - ITEMLIST *it; -{ - it->flags |= LIST_DIRTY; -} - -void -initialize_itemlist (itp) - ITEMLIST *itp; -{ - (*itp->list_getter) (itp); - itp->flags |= LIST_INITIALIZED; - itp->flags &= ~LIST_DIRTY; -} - -void -clean_itemlist (itp) - ITEMLIST *itp; -{ - STRINGLIST *sl; - - sl = itp->slist; - if (sl) - { - if ((itp->flags & (LIST_DONTFREEMEMBERS|LIST_DONTFREE)) == 0) - strvec_flush (sl->list); - if ((itp->flags & LIST_DONTFREE) == 0) - free (sl->list); - free (sl); - } - itp->slist = (STRINGLIST *)NULL; - itp->flags &= ~(LIST_DONTFREE|LIST_DONTFREEMEMBERS|LIST_INITIALIZED|LIST_DIRTY); -} - - -static int -shouldexp_filterpat (s) - char *s; -{ - register char *p; - - for (p = s; p && *p; p++) - { - if (*p == '\\') - p++; - else if (*p == '&') - return 1; - } - return 0; -} - -/* Replace any instance of `&' in PAT with TEXT. Backslash may be used to - quote a `&' and inhibit substitution. Returns a new string. This just - calls stringlib.c:strcreplace(). */ -static char * -preproc_filterpat (pat, text) - char *pat; - char *text; -{ - char *ret; - - ret = strcreplace (pat, '&', text, 1); - return ret; -} - -/* Remove any match of FILTERPAT from SL. A `&' in FILTERPAT is replaced by - TEXT. A leading `!' in FILTERPAT negates the pattern; in this case - any member of SL->list that does *not* match will be removed. This returns - a new STRINGLIST with the matching members of SL *copied*. Any - non-matching members of SL->list are *freed*. */ -STRINGLIST * -filter_stringlist (sl, filterpat, text) - STRINGLIST *sl; - char *filterpat, *text; -{ - int i, m, not; - STRINGLIST *ret; - char *npat, *t; - - if (sl == 0 || sl->list == 0 || sl->list_len == 0) - return sl; - - npat = shouldexp_filterpat (filterpat) ? preproc_filterpat (filterpat, text) : filterpat; - - not = (npat[0] == '!'); - t = not ? npat + 1 : npat; - - ret = strlist_create (sl->list_size); - for (i = 0; i < sl->list_len; i++) - { - m = strmatch (t, sl->list[i], FNMATCH_EXTFLAG); - if ((not && m == FNM_NOMATCH) || (not == 0 && m != FNM_NOMATCH)) - free (sl->list[i]); - else - ret->list[ret->list_len++] = sl->list[i]; - } - - ret->list[ret->list_len] = (char *)NULL; - if (npat != filterpat) - free (npat); - - return ret; -} - -/* Turn an array of strings returned by rl_completion_matches into a STRINGLIST. - This understands how rl_completion_matches sets matches[0] (the lcd of the - strings in the list, unless it's the only match). */ -STRINGLIST * -completions_to_stringlist (matches) - char **matches; -{ - STRINGLIST *sl; - int mlen, i, n; - - mlen = (matches == 0) ? 0 : strvec_len (matches); - sl = strlist_create (mlen + 1); - - if (matches == 0 || matches[0] == 0) - return sl; - - if (matches[1] == 0) - { - sl->list[0] = STRDUP (matches[0]); - sl->list[sl->list_len = 1] = (char *)NULL; - return sl; - } - - for (i = 1, n = 0; i < mlen; i++, n++) - sl->list[n] = STRDUP (matches[i]); - sl->list_len = n; - sl->list[n] = (char *)NULL; - - return sl; -} - -/* Functions to manage the various ITEMLISTs that we populate internally. - The caller is responsible for setting ITP->flags correctly. */ - -static int -it_init_aliases (itp) - ITEMLIST *itp; -{ -#ifdef ALIAS - alias_t **alias_list; - register int i, n; - STRINGLIST *sl; - - alias_list = all_aliases (); - if (alias_list == 0) - { - itp->slist = (STRINGLIST *)NULL; - return 0; - } - for (n = 0; alias_list[n]; n++) - ; - sl = strlist_create (n+1); - for (i = 0; i < n; i++) - sl->list[i] = STRDUP (alias_list[i]->name); - sl->list[n] = (char *)NULL; - sl->list_size = sl->list_len = n; - itp->slist = sl; -#else - itp->slist = (STRINGLIST *)NULL; -#endif - return 1; -} - -static void -init_itemlist_from_varlist (itp, svfunc) - ITEMLIST *itp; - SVFUNC *svfunc; -{ - SHELL_VAR **vlist; - STRINGLIST *sl; - register int i, n; - - vlist = (*svfunc) (); - if (vlist == 0) - { - itp->slist = (STRINGLIST *)NULL; - return; - } - for (n = 0; vlist[n]; n++) - ; - sl = strlist_create (n+1); - for (i = 0; i < n; i++) - sl->list[i] = savestring (vlist[i]->name); - sl->list[sl->list_len = n] = (char *)NULL; - itp->slist = sl; -} - -static int -it_init_arrayvars (itp) - ITEMLIST *itp; -{ -#if defined (ARRAY_VARS) - init_itemlist_from_varlist (itp, all_array_variables); - return 1; -#else - return 0; -#endif -} - -static int -it_init_bindings (itp) - ITEMLIST *itp; -{ - char **blist; - STRINGLIST *sl; - - /* rl_funmap_names allocates blist, but not its members */ - blist = (char **)rl_funmap_names (); /* XXX fix const later */ - sl = strlist_create (0); - sl->list = blist; - sl->list_size = 0; - sl->list_len = strvec_len (sl->list); - itp->flags |= LIST_DONTFREEMEMBERS; - itp->slist = sl; - - return 0; -} - -static int -it_init_builtins (itp) - ITEMLIST *itp; -{ - STRINGLIST *sl; - register int i, n; - - sl = strlist_create (num_shell_builtins); - for (i = n = 0; i < num_shell_builtins; i++) - if (shell_builtins[i].function) - sl->list[n++] = shell_builtins[i].name; - sl->list[sl->list_len = n] = (char *)NULL; - itp->flags |= LIST_DONTFREEMEMBERS; - itp->slist = sl; - return 0; -} - -static int -it_init_enabled (itp) - ITEMLIST *itp; -{ - STRINGLIST *sl; - register int i, n; - - sl = strlist_create (num_shell_builtins); - for (i = n = 0; i < num_shell_builtins; i++) - { - if (shell_builtins[i].function && (shell_builtins[i].flags & BUILTIN_ENABLED)) - sl->list[n++] = shell_builtins[i].name; - } - sl->list[sl->list_len = n] = (char *)NULL; - itp->flags |= LIST_DONTFREEMEMBERS; - itp->slist = sl; - return 0; -} - -static int -it_init_disabled (itp) - ITEMLIST *itp; -{ - STRINGLIST *sl; - register int i, n; - - sl = strlist_create (num_shell_builtins); - for (i = n = 0; i < num_shell_builtins; i++) - { - if (shell_builtins[i].function && ((shell_builtins[i].flags & BUILTIN_ENABLED) == 0)) - sl->list[n++] = shell_builtins[i].name; - } - sl->list[sl->list_len = n] = (char *)NULL; - itp->flags |= LIST_DONTFREEMEMBERS; - itp->slist = sl; - return 0; -} - -static int -it_init_exported (itp) - ITEMLIST *itp; -{ - init_itemlist_from_varlist (itp, all_exported_variables); - return 0; -} - -static int -it_init_functions (itp) - ITEMLIST *itp; -{ - init_itemlist_from_varlist (itp, all_visible_functions); - return 0; -} - -static int -it_init_hostnames (itp) - ITEMLIST *itp; -{ - STRINGLIST *sl; - - sl = strlist_create (0); - sl->list = get_hostname_list (); - sl->list_len = sl->list ? strvec_len (sl->list) : 0; - sl->list_size = sl->list_len; - itp->slist = sl; - itp->flags |= LIST_DONTFREEMEMBERS|LIST_DONTFREE; - return 0; -} - -static int -it_init_joblist (itp, jstate) - ITEMLIST *itp; - int jstate; -{ -#if defined (JOB_CONTROL) - STRINGLIST *sl; - register int i; - register PROCESS *p; - char *s, *t; - JOB *j; - JOB_STATE ws; /* wanted state */ - - if (jstate == 0) - ws = JRUNNING; - else if (jstate == 1) - ws = JSTOPPED; - - sl = strlist_create (js.j_jobslots); - for (i = js.j_jobslots - 1; i >= 0; i--) - { - j = get_job_by_jid (i); - if (j == 0) - continue; - p = j->pipe; - if (jstate == -1 || JOBSTATE(i) == ws) - { - s = savestring (p->command); - t = strpbrk (s, " \t\n"); - if (t) - *t = '\0'; - sl->list[sl->list_len++] = s; - } - } - itp->slist = sl; -#else - itp->slist = (STRINGLIST *)NULL; -#endif - return 0; -} - -static int -it_init_jobs (itp) - ITEMLIST *itp; -{ - return (it_init_joblist (itp, -1)); -} - -static int -it_init_running (itp) - ITEMLIST *itp; -{ - return (it_init_joblist (itp, 0)); -} - -static int -it_init_stopped (itp) - ITEMLIST *itp; -{ - return (it_init_joblist (itp, 1)); -} - -static int -it_init_keywords (itp) - ITEMLIST *itp; -{ - STRINGLIST *sl; - register int i, n; - - for (n = 0; word_token_alist[n].word; n++) - ; - sl = strlist_create (n); - for (i = 0; i < n; i++) - sl->list[i] = word_token_alist[i].word; - sl->list[sl->list_len = i] = (char *)NULL; - itp->flags |= LIST_DONTFREEMEMBERS; - itp->slist = sl; - return 0; -} - -static int -it_init_signals (itp) - ITEMLIST *itp; -{ - STRINGLIST *sl; - - sl = strlist_create (0); - sl->list = signal_names; - sl->list_len = strvec_len (sl->list); - itp->flags |= LIST_DONTFREE; - itp->slist = sl; - return 0; -} - -static int -it_init_variables (itp) - ITEMLIST *itp; -{ - init_itemlist_from_varlist (itp, all_visible_variables); - return 0; -} - -static int -it_init_setopts (itp) - ITEMLIST *itp; -{ - STRINGLIST *sl; - - sl = strlist_create (0); - sl->list = get_minus_o_opts (); - sl->list_len = strvec_len (sl->list); - itp->slist = sl; - itp->flags |= LIST_DONTFREEMEMBERS; - return 0; -} - -static int -it_init_shopts (itp) - ITEMLIST *itp; -{ - STRINGLIST *sl; - - sl = strlist_create (0); - sl->list = get_shopt_options (); - sl->list_len = strvec_len (sl->list); - itp->slist = sl; - itp->flags |= LIST_DONTFREEMEMBERS; - return 0; -} - -/* Generate a list of all matches for TEXT using the STRINGLIST in itp->slist - as the list of possibilities. If the itemlist has been marked dirty or - it should be regenerated every time, destroy the old STRINGLIST and make a - new one before trying the match. TEXT is dequoted before attempting a - match. */ -static STRINGLIST * -gen_matches_from_itemlist (itp, text) - ITEMLIST *itp; - const char *text; -{ - STRINGLIST *ret, *sl; - int tlen, i, n; - char *ntxt; - - if ((itp->flags & (LIST_DIRTY|LIST_DYNAMIC)) || - (itp->flags & LIST_INITIALIZED) == 0) - { - if (itp->flags & (LIST_DIRTY | LIST_DYNAMIC)) - clean_itemlist (itp); - if ((itp->flags & LIST_INITIALIZED) == 0) - initialize_itemlist (itp); - } - if (itp->slist == 0) - return ((STRINGLIST *)NULL); - ret = strlist_create (itp->slist->list_len+1); - sl = itp->slist; - - ntxt = bash_dequote_text (text); - tlen = STRLEN (ntxt); - - for (i = n = 0; i < sl->list_len; i++) - { - if (tlen == 0 || STREQN (sl->list[i], ntxt, tlen)) - ret->list[n++] = STRDUP (sl->list[i]); - } - ret->list[ret->list_len = n] = (char *)NULL; - - FREE (ntxt); - return ret; -} - -/* A wrapper for rl_filename_completion_function that dequotes the filename - before attempting completions. */ -static char * -pcomp_filename_completion_function (text, state) - const char *text; - int state; -{ - static char *dfn; /* dequoted filename */ - int qc; - - if (state == 0) - { - FREE (dfn); - /* remove backslashes quoting special characters in filenames. */ -#if 1 - if (RL_ISSTATE (RL_STATE_COMPLETING) && rl_filename_dequoting_function) -#else - if (rl_filename_dequoting_function) -#endif - { - /* Use rl_completion_quote_character because any single or - double quotes have been removed by the time TEXT makes it - here, and we don't want to remove backslashes inside - quoted strings. */ - dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); - } - else - dfn = savestring (text); - } - - return (rl_filename_completion_function (dfn, state)); -} - -#define GEN_COMPS(bmap, flag, it, text, glist, tlist) \ - do { \ - if (bmap & flag) \ - { \ - tlist = gen_matches_from_itemlist (it, text); \ - if (tlist) \ - { \ - glist = strlist_append (glist, tlist); \ - strlist_dispose (tlist); \ - } \ - } \ - } while (0) - -#define GEN_XCOMPS(bmap, flag, text, func, cmatches, glist, tlist) \ - do { \ - if (bmap & flag) \ - { \ - cmatches = rl_completion_matches (text, func); \ - tlist = completions_to_stringlist (cmatches); \ - glist = strlist_append (glist, tlist); \ - strvec_dispose (cmatches); \ - strlist_dispose (tlist); \ - } \ - } while (0) - -/* Functions to generate lists of matches from the actions member of CS. */ - -static STRINGLIST * -gen_action_completions (cs, text) - COMPSPEC *cs; - const char *text; -{ - STRINGLIST *ret, *tmatches; - char **cmatches; /* from rl_completion_matches ... */ - unsigned long flags; - - ret = tmatches = (STRINGLIST *)NULL; - flags = cs->actions; - - GEN_COMPS (flags, CA_ALIAS, &it_aliases, text, ret, tmatches); - GEN_COMPS (flags, CA_ARRAYVAR, &it_arrayvars, text, ret, tmatches); - GEN_COMPS (flags, CA_BINDING, &it_bindings, text, ret, tmatches); - GEN_COMPS (flags, CA_BUILTIN, &it_builtins, text, ret, tmatches); - GEN_COMPS (flags, CA_DISABLED, &it_disabled, text, ret, tmatches); - GEN_COMPS (flags, CA_ENABLED, &it_enabled, text, ret, tmatches); - GEN_COMPS (flags, CA_EXPORT, &it_exports, text, ret, tmatches); - GEN_COMPS (flags, CA_FUNCTION, &it_functions, text, ret, tmatches); - GEN_COMPS (flags, CA_HOSTNAME, &it_hostnames, text, ret, tmatches); - GEN_COMPS (flags, CA_JOB, &it_jobs, text, ret, tmatches); - GEN_COMPS (flags, CA_KEYWORD, &it_keywords, text, ret, tmatches); - GEN_COMPS (flags, CA_RUNNING, &it_running, text, ret, tmatches); - GEN_COMPS (flags, CA_SETOPT, &it_setopts, text, ret, tmatches); - GEN_COMPS (flags, CA_SHOPT, &it_shopts, text, ret, tmatches); - GEN_COMPS (flags, CA_SIGNAL, &it_signals, text, ret, tmatches); - GEN_COMPS (flags, CA_STOPPED, &it_stopped, text, ret, tmatches); - GEN_COMPS (flags, CA_VARIABLE, &it_variables, text, ret, tmatches); - - GEN_XCOMPS(flags, CA_COMMAND, text, command_word_completion_function, cmatches, ret, tmatches); - GEN_XCOMPS(flags, CA_FILE, text, pcomp_filename_completion_function, cmatches, ret, tmatches); - GEN_XCOMPS(flags, CA_USER, text, rl_username_completion_function, cmatches, ret, tmatches); - GEN_XCOMPS(flags, CA_GROUP, text, bash_groupname_completion_function, cmatches, ret, tmatches); - GEN_XCOMPS(flags, CA_SERVICE, text, bash_servicename_completion_function, cmatches, ret, tmatches); - - /* And lastly, the special case for directories */ - if (flags & CA_DIRECTORY) - { - rl_completion_mark_symlink_dirs = 1; /* override user preference */ - cmatches = bash_directory_completion_matches (text); - tmatches = completions_to_stringlist (cmatches); - ret = strlist_append (ret, tmatches); - strvec_dispose (cmatches); - strlist_dispose (tmatches); - } - - return ret; -} - -/* Generate a list of matches for CS->globpat. Unresolved: should this use - TEXT as a match prefix, or just go without? Currently, the code does not - use TEXT, just globs CS->globpat and returns the results. If we do decide - to use TEXT, we should call quote_string_for_globbing before the call to - glob_filename. */ -static STRINGLIST * -gen_globpat_matches (cs, text) - COMPSPEC *cs; - const char *text; -{ - STRINGLIST *sl; - - sl = strlist_create (0); - sl->list = glob_filename (cs->globpat, 0); - if (GLOB_FAILED (sl->list)) - sl->list = (char **)NULL; - if (sl->list) - sl->list_len = sl->list_size = strvec_len (sl->list); - return sl; -} - -/* Perform the shell word expansions on CS->words and return the results. - Again, this ignores TEXT. */ -static STRINGLIST * -gen_wordlist_matches (cs, text) - COMPSPEC *cs; - const char *text; -{ - WORD_LIST *l, *l2; - STRINGLIST *sl; - int nw, tlen; - char *ntxt; /* dequoted TEXT to use in comparisons */ - - if (cs->words == 0 || cs->words[0] == '\0') - return ((STRINGLIST *)NULL); - - /* This used to be a simple expand_string(cs->words, 0), but that won't - do -- there's no way to split a simple list into individual words - that way, since the shell semantics say that word splitting is done - only on the results of expansion. */ - l = split_at_delims (cs->words, strlen (cs->words), (char *)NULL, -1, (int *)NULL, (int *)NULL); - if (l == 0) - return ((STRINGLIST *)NULL); - /* This will jump back to the top level if the expansion fails... */ - l2 = expand_words_shellexp (l); - dispose_words (l); - - nw = list_length (l2); - sl = strlist_create (nw + 1); - - ntxt = bash_dequote_text (text); - tlen = STRLEN (ntxt); - - for (nw = 0, l = l2; l; l = l->next) - { - if (tlen == 0 || STREQN (l->word->word, ntxt, tlen)) - sl->list[nw++] = STRDUP (l->word->word); - } - sl->list[sl->list_len = nw] = (char *)NULL; - - dispose_words (l2); - FREE (ntxt); - return sl; -} - -#ifdef ARRAY_VARS - -static SHELL_VAR * -bind_comp_words (lwords) - WORD_LIST *lwords; -{ - SHELL_VAR *v; - - v = find_variable ("COMP_WORDS"); - if (v == 0) - v = make_new_array_variable ("COMP_WORDS"); - if (readonly_p (v)) - VUNSETATTR (v, att_readonly); - if (array_p (v) == 0) - v = convert_var_to_array (v); - v = assign_array_var_from_word_list (v, lwords, 0); - - VUNSETATTR (v, att_invisible); - return v; -} -#endif /* ARRAY_VARS */ - -static void -bind_compfunc_variables (line, ind, lwords, cw, exported) - char *line; - int ind; - WORD_LIST *lwords; - int cw, exported; -{ - char ibuf[INT_STRLEN_BOUND(int) + 1]; - char *value; - SHELL_VAR *v; - - /* Set the variables that the function expects while it executes. Maybe - these should be in the function environment (temporary_env). */ - v = bind_variable ("COMP_LINE", line, 0); - if (v && exported) - VSETATTR(v, att_exported); - - value = inttostr (ind, ibuf, sizeof(ibuf)); - v = bind_int_variable ("COMP_POINT", value); - if (v && exported) - VSETATTR(v, att_exported); - - value = inttostr (rl_completion_type, ibuf, sizeof (ibuf)); - v = bind_int_variable ("COMP_TYPE", value); - if (v && exported) - VSETATTR(v, att_exported); - - value = inttostr (rl_completion_invoking_key, ibuf, sizeof (ibuf)); - v = bind_int_variable ("COMP_KEY", value); - if (v && exported) - VSETATTR(v, att_exported); - - /* Since array variables can't be exported, we don't bother making the - array of words. */ - if (exported == 0) - { -#ifdef ARRAY_VARS - v = bind_comp_words (lwords); - value = inttostr (cw, ibuf, sizeof(ibuf)); - bind_int_variable ("COMP_CWORD", value); -#endif - } - else - array_needs_making = 1; -} - -static void -unbind_compfunc_variables (exported) - int exported; -{ - unbind_variable ("COMP_LINE"); - unbind_variable ("COMP_POINT"); - unbind_variable ("COMP_TYPE"); - unbind_variable ("COMP_KEY"); -#ifdef ARRAY_VARS - unbind_variable ("COMP_WORDS"); - unbind_variable ("COMP_CWORD"); -#endif - if (exported) - array_needs_making = 1; -} - -/* Build the list of words to pass to a function or external command - as arguments. When the function or command is invoked, - - $0 == function or command being invoked - $1 == command name - $2 = word to be completed (possibly null) - $3 = previous word - - Functions can access all of the words in the current command line - with the COMP_WORDS array. External commands cannot. */ - -static WORD_LIST * -build_arg_list (cmd, text, lwords, ind) - char *cmd; - const char *text; - WORD_LIST *lwords; - int ind; -{ - WORD_LIST *ret, *cl, *l; - WORD_DESC *w; - int i; - - ret = (WORD_LIST *)NULL; - w = make_word (cmd); - ret = make_word_list (w, (WORD_LIST *)NULL); - - w = (lwords && lwords->word) ? copy_word (lwords->word) : make_word (""); - cl = ret->next = make_word_list (w, (WORD_LIST *)NULL); - - w = make_word (text); - cl->next = make_word_list (w, (WORD_LIST *)NULL); - cl = cl->next; - - /* Search lwords for current word */ - for (l = lwords, i = 1; l && i < ind-1; l = l->next, i++) - ; - w = (l && l->word) ? copy_word (l->word) : make_word (""); - cl->next = make_word_list (w, (WORD_LIST *)NULL); - - return ret; -} - -/* Build a command string with - $0 == cs->funcname (function to execute for completion list) - $1 == command name (command being completed) - $2 = word to be completed (possibly null) - $3 = previous word - and run in the current shell. The function should put its completion - list into the array variable COMPREPLY. We build a STRINGLIST - from the results and return it. - - Since the shell function should return its list of matches in an array - variable, this does nothing if arrays are not compiled into the shell. */ - -static STRINGLIST * -gen_shell_function_matches (cs, text, line, ind, lwords, nw, cw) - COMPSPEC *cs; - const char *text; - char *line; - int ind; - WORD_LIST *lwords; - int nw, cw; -{ - char *funcname; - STRINGLIST *sl; - SHELL_VAR *f, *v; - WORD_LIST *cmdlist; - int fval; - sh_parser_state_t ps; -#if defined (ARRAY_VARS) - ARRAY *a; -#endif - - funcname = cs->funcname; - f = find_function (funcname); - if (f == 0) - { - internal_error (_("completion: function `%s' not found"), funcname); - rl_ding (); - rl_on_new_line (); - return ((STRINGLIST *)NULL); - } - -#if !defined (ARRAY_VARS) - return ((STRINGLIST *)NULL); -#else - - /* We pass cw - 1 because command_line_to_word_list returns indices that are - 1-based, while bash arrays are 0-based. */ - bind_compfunc_variables (line, ind, lwords, cw - 1, 0); - - cmdlist = build_arg_list (funcname, text, lwords, cw); - - save_parser_state (&ps); - fval = execute_shell_function (f, cmdlist); - restore_parser_state (&ps); - - /* Now clean up and destroy everything. */ - dispose_words (cmdlist); - unbind_compfunc_variables (0); - - /* The list of completions is returned in the array variable COMPREPLY. */ - v = find_variable ("COMPREPLY"); - if (v == 0) - return ((STRINGLIST *)NULL); - if (array_p (v) == 0) - v = convert_var_to_array (v); - - VUNSETATTR (v, att_invisible); - - a = array_cell (v); - if (a == 0 || array_empty (a)) - sl = (STRINGLIST *)NULL; - else - { - /* XXX - should we filter the list of completions so only those matching - TEXT are returned? Right now, we do not. */ - sl = strlist_create (0); - sl->list = array_to_argv (a); - sl->list_len = sl->list_size = array_num_elements (a); - } - - /* XXX - should we unbind COMPREPLY here? */ - unbind_variable ("COMPREPLY"); - - return (sl); -#endif -} - -/* Build a command string with - $0 == cs->command (command to execute for completion list) - $1 == command name (command being completed) - $2 = word to be completed (possibly null) - $3 = previous word - and run in with command substitution. Parse the results, one word - per line, with backslashes allowed to escape newlines. Build a - STRINGLIST from the results and return it. */ - -static STRINGLIST * -gen_command_matches (cs, text, line, ind, lwords, nw, cw) - COMPSPEC *cs; - const char *text; - char *line; - int ind; - WORD_LIST *lwords; - int nw, cw; -{ - char *csbuf, *cscmd, *t; - int cmdlen, cmdsize, n, ws, we; - WORD_LIST *cmdlist, *cl; - WORD_DESC *tw; - STRINGLIST *sl; - - bind_compfunc_variables (line, ind, lwords, cw, 1); - cmdlist = build_arg_list (cs->command, text, lwords, cw); - - /* Estimate the size needed for the buffer. */ - n = strlen (cs->command); - cmdsize = n + 1; - for (cl = cmdlist->next; cl; cl = cl->next) - cmdsize += STRLEN (cl->word->word) + 3; - cmdsize += 2; - - /* allocate the string for the command and fill it in. */ - cscmd = (char *)xmalloc (cmdsize + 1); - - strcpy (cscmd, cs->command); /* $0 */ - cmdlen = n; - cscmd[cmdlen++] = ' '; - for (cl = cmdlist->next; cl; cl = cl->next) /* $1, $2, $3, ... */ - { - t = sh_single_quote (cl->word->word ? cl->word->word : ""); - n = strlen (t); - RESIZE_MALLOCED_BUFFER (cscmd, cmdlen, n + 2, cmdsize, 64); - strcpy (cscmd + cmdlen, t); - cmdlen += n; - if (cl->next) - cscmd[cmdlen++] = ' '; - free (t); - } - cscmd[cmdlen] = '\0'; - - tw = command_substitute (cscmd, 0); - csbuf = tw ? tw->word : (char *)NULL; - dispose_word_desc (tw); - - /* Now clean up and destroy everything. */ - dispose_words (cmdlist); - free (cscmd); - unbind_compfunc_variables (1); - - if (csbuf == 0 || *csbuf == '\0') - { - FREE (csbuf); - return ((STRINGLIST *)NULL); - } - - /* Now break CSBUF up at newlines, with backslash allowed to escape a - newline, and put the individual words into a STRINGLIST. */ - sl = strlist_create (16); - for (ws = 0; csbuf[ws]; ) - { - we = ws; - while (csbuf[we] && csbuf[we] != '\n') - { - if (csbuf[we] == '\\' && csbuf[we+1] == '\n') - we++; - we++; - } - t = substring (csbuf, ws, we); - if (sl->list_len >= sl->list_size - 1) - strlist_resize (sl, sl->list_size + 16); - sl->list[sl->list_len++] = t; - while (csbuf[we] == '\n') we++; - ws = we; - } - sl->list[sl->list_len] = (char *)NULL; - - free (csbuf); - return (sl); -} - -static WORD_LIST * -command_line_to_word_list (line, llen, sentinel, nwp, cwp) - char *line; - int llen, sentinel, *nwp, *cwp; -{ - WORD_LIST *ret; - char *delims; - -#if 0 - delims = "()<>;&| \t\n"; /* shell metacharacters break words */ -#else - delims = rl_completer_word_break_characters; -#endif - ret = split_at_delims (line, llen, delims, sentinel, nwp, cwp); - return (ret); -} - -/* Evaluate COMPSPEC *cs and return all matches for WORD. */ - -STRINGLIST * -gen_compspec_completions (cs, cmd, word, start, end) - COMPSPEC *cs; - const char *cmd; - const char *word; - int start, end; -{ - STRINGLIST *ret, *tmatches; - char *line; - int llen, nw, cw; - WORD_LIST *lwords; - COMPSPEC *tcs; - -#ifdef DEBUG - debug_printf ("gen_compspec_completions (%s, %s, %d, %d)", cmd, word, start, end); - debug_printf ("gen_compspec_completions: %s -> %p", cmd, cs); -#endif - ret = gen_action_completions (cs, word); -#ifdef DEBUG - if (ret && progcomp_debug) - { - debug_printf ("gen_action_completions (%p, %s) -->", cs, word); - strlist_print (ret, "\t"); - rl_on_new_line (); - } -#endif - - /* Now we start generating completions based on the other members of CS. */ - if (cs->globpat) - { - tmatches = gen_globpat_matches (cs, word); - if (tmatches) - { -#ifdef DEBUG - if (progcomp_debug) - { - debug_printf ("gen_globpat_matches (%p, %s) -->", cs, word); - strlist_print (tmatches, "\t"); - rl_on_new_line (); - } -#endif - ret = strlist_append (ret, tmatches); - strlist_dispose (tmatches); - rl_filename_completion_desired = 1; - } - } - - if (cs->words) - { - tmatches = gen_wordlist_matches (cs, word); - if (tmatches) - { -#ifdef DEBUG - if (progcomp_debug) - { - debug_printf ("gen_wordlist_matches (%p, %s) -->", cs, word); - strlist_print (tmatches, "\t"); - rl_on_new_line (); - } -#endif - ret = strlist_append (ret, tmatches); - strlist_dispose (tmatches); - } - } - - lwords = (WORD_LIST *)NULL; - line = (char *)NULL; - if (cs->command || cs->funcname) - { - /* If we have a command or function to execute, we need to first break - the command line into individual words, find the number of words, - and find the word in the list containing the word to be completed. */ - line = substring (rl_line_buffer, start, end); - llen = end - start; - -#ifdef DEBUG - debug_printf ("command_line_to_word_list (%s, %d, %d, %p, %p)", - line, llen, rl_point - start, &nw, &cw); -#endif - lwords = command_line_to_word_list (line, llen, rl_point - start, &nw, &cw); -#ifdef DEBUG - if (lwords == 0 && llen > 0) - debug_printf ("ERROR: command_line_to_word_list returns NULL"); - else if (progcomp_debug) - { - debug_printf ("command_line_to_word_list -->"); - printf ("\t"); - print_word_list (lwords, "!"); - printf ("\n"); - fflush(stdout); - rl_on_new_line (); - } -#endif - } - - if (cs->funcname) - { - tmatches = gen_shell_function_matches (cs, word, line, rl_point - start, lwords, nw, cw); - if (tmatches) - { -#ifdef DEBUG - if (progcomp_debug) - { - debug_printf ("gen_shell_function_matches (%p, %s, %p, %d, %d) -->", cs, word, lwords, nw, cw); - strlist_print (tmatches, "\t"); - rl_on_new_line (); - } -#endif - ret = strlist_append (ret, tmatches); - strlist_dispose (tmatches); - } - } - - if (cs->command) - { - tmatches = gen_command_matches (cs, word, line, rl_point - start, lwords, nw, cw); - if (tmatches) - { -#ifdef DEBUG - if (progcomp_debug) - { - debug_printf ("gen_command_matches (%p, %s, %p, %d, %d) -->", cs, word, lwords, nw, cw); - strlist_print (tmatches, "\t"); - rl_on_new_line (); - } -#endif - ret = strlist_append (ret, tmatches); - strlist_dispose (tmatches); - } - } - - if (cs->command || cs->funcname) - { - if (lwords) - dispose_words (lwords); - FREE (line); - } - - if (cs->filterpat) - { - tmatches = filter_stringlist (ret, cs->filterpat, word); -#ifdef DEBUG - if (progcomp_debug) - { - debug_printf ("filter_stringlist (%p, %s, %s) -->", ret, cs->filterpat, word); - strlist_print (tmatches, "\t"); - rl_on_new_line (); - } -#endif - if (ret && ret != tmatches) - { - FREE (ret->list); - free (ret); - } - ret = tmatches; - } - - if (cs->prefix || cs->suffix) - ret = strlist_prefix_suffix (ret, cs->prefix, cs->suffix); - - /* If no matches have been generated and the user has specified that - directory completion should be done as a default, call - gen_action_completions again to generate a list of matching directory - names. */ - if ((ret == 0 || ret->list_len == 0) && (cs->options & COPT_DIRNAMES)) - { - tcs = compspec_create (); - tcs->actions = CA_DIRECTORY; - ret = gen_action_completions (tcs, word); - compspec_dispose (tcs); - } - else if (cs->options & COPT_PLUSDIRS) - { - tcs = compspec_create (); - tcs->actions = CA_DIRECTORY; - tmatches = gen_action_completions (tcs, word); - ret = strlist_append (ret, tmatches); - strlist_dispose (tmatches); - compspec_dispose (tcs); - } - - return (ret); -} - -void -pcomp_set_readline_variables (flags, nval) - int flags, nval; -{ - /* If the user specified that the compspec returns filenames, make - sure that readline knows it. */ - if (flags & COPT_FILENAMES) - rl_filename_completion_desired = nval; - /* If the user doesn't want a space appended, tell readline. */ - if (flags & COPT_NOSPACE) - rl_completion_suppress_append = nval; -} - -/* Set or unset FLAGS in the options word of the current compspec. - SET_OR_UNSET is 1 for setting, 0 for unsetting. */ -void -pcomp_set_compspec_options (cs, flags, set_or_unset) - COMPSPEC *cs; - int flags, set_or_unset; -{ - if (cs == 0 && ((cs = pcomp_curcs) == 0)) - return; - if (set_or_unset) - cs->options |= flags; - else - cs->options &= ~flags; -} - -/* The driver function for the programmable completion code. Returns a list - of matches for WORD, which is an argument to command CMD. START and END - bound the command currently being completed in rl_line_buffer. */ -char ** -programmable_completions (cmd, word, start, end, foundp) - const char *cmd; - const char *word; - int start, end, *foundp; -{ - COMPSPEC *cs, *oldcs; - STRINGLIST *ret; - char **rmatches, *t; - - /* We look at the basename of CMD if the full command does not have - an associated COMPSPEC. */ - cs = progcomp_search (cmd); - if (cs == 0) - { - t = strrchr (cmd, '/'); - if (t) - cs = progcomp_search (++t); - } - if (cs == 0) - { - if (foundp) - *foundp = 0; - return ((char **)NULL); - } - - cs = compspec_copy (cs); - - oldcs = pcomp_curcs; - oldcmd = pcomp_curcmd; - pcomp_curcs = cs; - pcomp_curcmd = cmd; - /* Signal the caller that we found a COMPSPEC for this command, and pass - back any meta-options associated with the compspec. */ - if (foundp) - *foundp = 1|cs->options; - - ret = gen_compspec_completions (cs, cmd, word, start, end); - - pcomp_curcs = oldcs; - compspec_dispose (cs); - - if (ret) - { - rmatches = ret->list; - free (ret); - } - else - rmatches = (char **)NULL; - - return (rmatches); -} - -#endif /* PROGRAMMABLE_COMPLETION */ diff --git a/CHANGES-4.0-beta2 b/CHANGES-4.0-beta2 deleted file mode 100644 index d5dfa7300..000000000 --- a/CHANGES-4.0-beta2 +++ /dev/null @@ -1,32 +0,0 @@ -This document details the changes between this version, bash-4.0-beta2, -and the previous version, bash-4.0-alpha. - -1. Changes to Bash - -a. Fixed a bug that caused failed word expansions to set $? but not - PIPESTATUS. - -b. Changed filename completion to quote the tilde in a filename with a - leading tilde that exists in the current directory. - -c. Fixed a bug that caused a file descriptor leak when performing - redirections attached to a compound command. - -d. Fixed a bug that caused expansions of $@ and $* to not exit the shell if - the -u option was enabled and there were no posititional parameters. - -e. Fixed a bug that resulted in bash not terminating immediately if a - terminating signal was received while performing output. - -f. Fixed a bug that caused the shell to crash after creating 256 process - substitutions during word completion. - -2. Changes to Readline - -a. Fixed a bug that caused redisplay errors when using prompts with invisible - characters and numeric arguments to a command in a multibyte locale. - -b. Fixed a bug that caused redisplay errors when using prompts with invisible - characters spanning more than two physical screen lines. - ------------------------------------------------------------------------------- diff --git a/CWRU/#CWRU.chlog# b/CWRU/#CWRU.chlog# deleted file mode 100644 index 1cd2500a4..000000000 --- a/CWRU/#CWRU.chlog# +++ /dev/null @@ -1,15250 +0,0 @@ - 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/2004 - -------- -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/2006 - -------- -doc/bash.1 - - patch from Tim Waugh to replace some literal single quotes with - \(aq, the groff special character for it - -jobs.c - - in realloc_jobs_list, make sure to zero out slots after j_lastj - in the new list - - 1/9 - --- -support/mksignames.c - - make sure to include to get right value of NSIG from - (usually) - - 1/10 - ---- -parse.y - - when calling parse_matched_pair on a $(...) command substitution, - don't pass the P_DQUOTE flag so that single quotes don't get - stripped from $'...' inside the command substitution. Bug report - and fix from Mike Stroyan - -jobs.c - - start maintaining true count of living children in js.c_living - - call reset_current in realloc_jobs_list, since old values for current - and previous job are most likely incorrect - - don't allocate a new list in realloc_jobs_list if the old size and - new size are the same; just compact the existing list - - make sure realloc_jobs_list updates value of js.j_njobs - - add some more itrace messages about non-null jobs after j_lastj in - jobs array - - 1/11 - ---- -bashjmp.h - - new value for second argument to longjmp: SIGEXIT. Reserved for - future use - - 1/12 - ---- -jobs.c - - add logic to make_child to figure out when pids wrap around - - turn second argument to delete_job into flags word, added flag to - prevent adding proc to bgpids list - - 1/13 - ---- -lib/readline/vi_mode.c - - move code that moves forward a character out of rl_vi_append_mode - into a separate function, _rl_vi_append_forward - - change _rl_vi_append_mode to save `a' as the last command, so it - can be redone properly - - new function _rl_vi_backup, moves point back a character taking - multibyte locales into account - - change rl_vi_redo to handle redoing an `a' command specially -- - it should be redone like `i' but after moving forward a character - - change rl_vi_redo to use _rl_vi_backup to move point backward - after redoing `i' or `a' - -jobs.c - - new function, delete_old_job (pid), checks whether or not PID is in - a job in the jobs list. If so, and the job is dead, it just removes - the job from the list. If so, and the job is not dead, it zeros - the pid in the appropriate PROCESS so pid aliasing doesn't occur - - make_child calls delete_old_job to potentially remove an already-used - instance of the pid just forked from the jobs list if pids have - wrapped around. Finally fixes the bug reported by Tim Waugh - - -trap.c - - new define, GETORIGSIG(sig), gets the original handling for SIG and - sets SIG_HARD_IGNORE if that handler is SIG_IGN - - call GETORIGSIG from initialize_traps, get_original_signal, and - set_signal - -jobs.c - - in wait_for, if the original SIGINT handler is SIG_IGN, don't set - the handler to wait_sigint_handler. This keeps scripts started in - the background (and ignoring SIGINT) from dying due to SIGINT while - they're waiting for a child to exit. Bug reported by Ingemar - Nilsson - -lib/readline/vi_mode.c - - don't save text to buffer unless undo pointer points to a record of - type UNDO_INSERT; zero it out instead. This fixes bug reported by - Craig Turner with redoing `ctd[ESC]' (empty - insert after change to) - -shell.c - - change set_shell_name so invocations like "-/bin/bash" are marked as - login shells - -doc/bash.1 - - add note about destroying functions with `unset -f' to the section - on shell functions - -lib/readline/terminal.c - - if readline hasn't been initialized (_rl_term_autowrap == -1, the - value it's now initialized with), call _rl_init_terminal_io from - _rl_set_screen_size before deciding whether or not to decrement - _rl_screenwidth. Fixes bug from Mike Frysinger - - 1/14 - ---- -lib/readline/input.c - - allow rl_set_keyboard_input_timeout to set the timeout to 0, for - applications that want to use select() like a poll without any - waiting - -lib/readline/doc/rltech.texi - - documented valid values for timeout in rl_set_keyboard_input_timeout - -jobs.c - - in stop_pipeline, don't have the parent shell call give_terminal_to - if subshell_environment contains SUBSHELL_ASYNC (no background - process should ever give the terminal to anything other than - shell_pgrp) - - in make_child, don't give the terminal away if subshell_environment - contains SUBSHELL_ASYNC - - 1/15 - ---- -subst.c - - in parameter_brace_expand, if extracting ${#varname}, only allow - `}' to end the expansion, since none of the other expansions are - valid. Fixes Debian bug reported by Jan Nordhorlz - - 1/17 - ---- -parse.y - - in parse_matched_pair, protect all character tests with the MBTEST - macro - - in parse_dparen, take out extra make_word after call to alloc_word_desc - (mem leak) - - 1/18 - ---- -parse.y - - in parse_matched_pair, add P_ALLOWESC to flags passed to recursive - parse_matched_pair call when encountering a single or double quote - inside a ``-style command substitution - -execute_cmd.c - - add call to QUIT at beginning of execute_command_internal; better - responsiveness to SIGINT - - 1/21 - ---- -lib/readline/bind.c - - change rl_invoking_keyseqs_in_map to honor the setting of - convert-meta when listing key bindings, since if convert-meta is off, - using '\M-' as the prefix for bindings in, for instance, - emacs-escape-keymap, is wrong. This affects `bind -p' output - - change rl_untranslate_keyseq to add '\e' instead of '\C-[' for - ESC - -execute_cmd.c - - add call to QUIT at end of execute_command - - 1/23 - ---- -lib/readline/display.c - - changed two places in update_line where a check of whether the cursor - is before the last invisible character in the prompt string to - differentiate between the multibyte character case (where - _rl_last_c_pos is a physical cursor position) and the single-byte - case (where it is a buffer index). This prevents many unnecessary - \r-redraw the line sequences. Reported by Dan Jacobson. - - 1/24 - ---- -quit.h - - wrap QUIT macro in do...while(0) like other compound statement - macros - - CHECK_TERMSIG define (placeholder for now); future use will be to - handle any received signals that should cause the shell to - terminate (e.g., SIGHUP) - -{input,jobs,nojobs}.c - - add calls to CHECK_TERMSIG where appropriate (reading input and - waiting for children) - - include quit.h if necessary - - 1/25 - ---- -parse.y - - undo change that makes `)' in a compound assignment delimit a token. - It messes up arithmetic expressions in assignments to `let', among - other things - -sig.h,{jobs,nojobs,sig,trap}.c,builtins/trap.def - - rename termination_unwind_protect to termsig_sighandler - -sig.c - - split termsig_sighandler into two functions: termsig_sighandler, which - runs as a signal handler and sets a flag noting that a terminating - signal was received, and termsig_handler, which runs when it is `safe' - to handle the signal and exit - - new terminate_immediately variable, similar to interrupt_immediately - - termsig_sighandler calls termsig_handler immediately if - terminate_immediately is non-zero - -quit.h - - change CHECK_TERMSIG macro to check terminating_signal and call - termsig_handler if it's non-zero - - add same check of terminating_signal and call to termsig_handler to - QUIT macro - -{jobs,nojobs}.c - - change call to termsig_sighandler to call termsig_handler directly, - as was intended - -parse.y,builtins/read.def - - set terminate_immediately to non-zero value when reading interactive - input, as is done with interrupt_immediately - - 1/26 - ---- -doc/{bash.1,bashref.texi} - - reworded the POSIX standard references to remove mention of POSIX.2 - or 1003.2 -- it's all the 1003.1 standard now. Recommended by - Arnold Robbins - - 1/27 - ---- -lib/readline/complete.c - - move call to filename dequoting function into - rl_filename_completion_function; call only if directory completion - hook isn't set. This means that directory-completion-hook now needs - to dequote the directory name. We don't want to dequote the directory - name before calling the directory-completion-hook. Bug reported by - Andrew Parker - -bashline.c - - add necessary directory name dequoting to bash_directory_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 - - 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 - - 3/29 - ---- -command.h - - new flag for subshell_environment: SUBSHELL_PROCSUB, for process - substitution - -subst.c - - add SUBSHELL_PROCSUB to subshell_environment in process_substitute - - 3/30 - ---- -doc/Makefile.in - - fix installation of bash.info to understand that it is in the build - directory, not the source directory - -mailcheck.c - - new function, init_mail_dates, calls remember_mail_dates only if - there are no mailboxes in `mailfiles' - - new function, init_mail_file, initializes a FILEINFO, using the - last time mail was checked as the mtime and atime (or the time the - shell was started if last_time_mail_checked is uninitialized) - - call init_mail_file instead of update_mail_file in add_mail_file, - called from remember_mail_dates (which is supposed to initialize - the list of mail files) - - new convenience functions, alloc_mail_file and dispose_mail_file to - allocate and free FILEINFO structs - -mailcheck.h - - extern declaration for init_mail_dates - -shell.c - - call init_mail_dates instead of remember_mail_dates - - 4/4 - --- -builtins/read.def - - changes to print $PS2 when a line is continued with a backslash in - an interactive shell. This is as POSIX requires - - 4/5 - --- -subst.c - - make sure quote_escapes is only ever called when the word to be - escaped is not marked as double-quoted -- cleaner, and allows us - to make certain assumptions - - 4/6 - --- -subst.c - - change all EX_* defines to begin with SX_ - - new flag, SX_NOCTLESC, obeyed by string_extract_verbatim, tells it - to not obey CTLESC quoting - - change quote_escapes to not quote CTLESC with CTLESC if one of the - chars in $IFS is CTLESC, since the return value from quote_string - will be passed to word splitting and filename generation - - change read_comsub to do the same thing for unquoted command - substitutions - - change list_string to pass SX_NOCTLESC if CTLESC is one of the - chars in $IFS, so it will split on CTLESC instead of using it as a - quote character - - 4/7 - --- -subst.c - - slight change to string_extract_verbatim to allow CTLESC to quote - CTLNUL even if SX_NOCTLESC is set in the flags passed, to protect - the CTLNULs from future calls to remove_quoted_nulls. Only - matters when $IFS contains CTLESC - - changes to cope with $IFS containing CTLNUL in the same way as the - CTLESC changes - -builtins/read.def - - changes to cope with $IFS containing CTLNUL in the same way as the - CTLESC changes - - 4/16 - ---- -lib/sh/strftime.c - - a couple of fixes to the `%z' code - -eval.c - - add an fflush after printing the auto-logout message - - 4/24 - ---- -subst.c - - add call to top_level_cleanup in exp_jump_to_top_level to get things - like unwind-protects and the loop levels cleaned up - -{arrayfunc,expr,variables}.c - - add calls to top_level_cleanup before jump_to_top_level() - - 4/27 - ---- -builtins/complete.def - - make sure the `command' argument to the -C option is printed with - single quotes, since multi-word commands will require them. Bug - reported by martin@snowplow.org - -execute_cmd.c - - change execute_builtin_or_function and execute_subshell_builtin_or_function - to call fflush(stdout) after the builtin or function returns, to - make sure that all output is flushed before the call returns. It - matters on cygwin. Fix suggested by Eric Blake - -redir.c - - in do_redirection_internal, if the file descriptor being acted upon - is the same one used by the stdout stream, call fflush(stdout) to - make sure all output is flushed before changing the underlying fd - out from underneath stdio. Fix suggested by Eric Blake - - - 4/30 - ---- - -builtins/common.c - - new function, sh_chkwrite(int), fflushes stdout and checks for error; - printing an error message and returning a new exit status if there's - an error on stdout. Takes exit status as argument; returns new exit - status (EXECUTION_FAILURE if write error) - -builtins/common.h - - new extern declaration for sh_chkwrite - -builtins/{alias,cd,complete,echo,fc,history,pushd,shopt,times,trap,type,ulimit,umask}.def - - change to use sh_chkwrite to report write errors - -builtins/fc.def - - if an error occurs while writing commands from the history to a file - to be executed, report a write error and return failure without - attempting to execute any commands - - 5/1 - --- -builtins/{bind,declare,set,setattr}.def - - change to use sh_chkwrite to report write errors - - 5/2 - --- -lib/readline/input.c - - fix off-by-one errors in _rl_get_char (pop_index) and rl_stuff_char - (push_index) that caused the 511th character in the buffer to be - discarded. Fixes bug reported by Tom Bjorkholm - - 5/8 - --- -subst.c - - fix parameter_brace_remove_pattern to pass getpattern() newly-allocated - memory. If word expansions (particularly brace expansions) are - required, the expansion code will free the string passed to - expand_word_internal, and we don't want to free unallocated memory - (patstr++) or have duplicate frees (patstr). Fixes bug reported on - Red Hat bugzilla - - 5/9 - --- -lib/readline/signals.c - - fix bug in rl_set_signals that caught SIGINT twice and didn't catch - SIGTERM. Bug reported by Ed Kwan - - 5/18 - ---- -jobs.c - - change compact_jobs_list to return 1 if js.j_lastj == 0 and there is - a job in jobs[0]; compact_jobs_list should never return an index - already occupied - - change reset_job_indices to avoid infinite looping when js.j_firstj - == 0 or js.j_firstj == js.j_jobslots upon function entry. Fixes - bug reported by osicka@post.cz - - 5/20 - ---- - -execute_cmd.c - - new variable, executing_builtin, keeps track of number of "levels" - of builtins being executed; incremented by execute_builtin; saved - and restored by execute_simple_command - -subst.c - - new variable, assigning_in_environment, set and unset around calls - to assign_in_env by the expansion code - -variables.c - - use executing_builtin and assigning_in_environment to decide whether - or not to look into temporary_env when calling find_variable_internal. - Fixes problem reported by Kevin Quinn - - 5/22 - ---- -redir.c - - change add_undo_redirect to differentiate between file descriptors - greater than SHELL_FD_BASE (currently 10) used internally to save - others and then being the targets of user redirection and fds that - are just the target of user redirections. The former need to have - an `exec undo' redirect added to undo it in case exec throws away - redirections; the latter does not. We use the close-on-exec flag - for this: if it's set, we assume that the file descriptor is being - used internally to save another. Fixes problem reported by Ian - Jackson - -shell.c - - new function, init_interactive_script(), does interactive initialization - for a script run with `bash -i script' -- does everything the same - as init_interactive except set `interactive == 1', which causes the - shell to read from the standard input, after calling - init_noninteractive - - call init_interactive_script if a script is run as `bash -i script'. - Fixes problem reported by Joseph Michaud - - 5/24 - ---- -builtins/printf.def - - change vbadd to only call FASTCOPY if the passed buffer length is - > 1 - - if the `-v' option is supplied and `vbuf' is already non-null from a - previous `printf -v var' call, set vbuf[0]=0 explicitly instead of - relying on vbadd to do it -- vbadd may not be called. - - fix PRETURN macro to set vbuf[0] == 0 if vbuf is not freed. These - should fix problem reported by Elmar Stellnberger - -lib/readline/display.c - - fix update_line to deal with the case where col_lendiff > 0 (meaning - the new string takes up more screen real estate than the old) but - lendiff < 0 (meaning that it takes fewer bytes to do so). This can - happen when a multibyte prompt string is replaced with a longer one - containing only single-byte characters (e.g., when doing a reverse - i-search). Fixes gentoo bug reported by Peter Volkov - - -builtins/read.def - - make sure we only print $PS2 if the standard input is a terminal - - new function, read_mbchar, to read a multibyte character so we - can make sure we read entire multibyte chars when `read -n' is - used, rather than bytes. Only called when -n is supplied. - Fixes problem reported by Stanislav Brabec - - 5/25 - ---- -externs.h - - new #defines for third argument to named_function_string: - FUNC_MULTILINE (don't suppress newlines) and FUNC_EXTERNAL (convert - to external display form) - -subst.h - - new extern declaration for remove_quoted_escapes - -subst.c - - remove_quoted_escapes is now global - -print_cmd.c - - in named_function_string, if FUNC_EXTERNAL is in the flags argument, - call remove_quoted_escapes to convert from internal to external form. - Fixes bug reported by Bo Andresen - -variables.c,builtins/{declare,setattr,type}.def - - use FUNC_MULTILINE in calls to named_function_string as appropriate - - add FUNC_EXTERNAL to calls to named_function_string as appropriate - - 5/27 - ---- -{make_cmd,variables}.c - - changes to enable the shell to compile when debugger support is - configured out (function_def hash table and access functions). Fixes - bug reported by Horst Wente - -builtins/help.def - - fix bug in `help' two-column printing to avoid referencing - shell_builtins[num_shell_builtins] - -error.c - - in get_name_for_error, use dollar_vars[0] if the name returned from - looking in $BASH_SOURCE[0] is the empty string as well as if it's - null - - 5/31 - ---- -arrayfunc.c - - change array_value_internal to set *RTYPE to 1 if the reference is - array[*] and 2 if the reference is array[@] - -subst.c - - in parameter_brace_expand_word, set the flags returned by the word - desc to include W_HASQUOTEDNULL if array_value returns QUOTED_NULL - for an array reference like x[*] and the word is quoted. Fixes bug - reported by Christophe Martin - - 6/1 - --- -jobs.c - - several changes to preserve errno if tcgetpgrp/tcgetattr/tcsetattr - fail, for subsequent error messages - - change initialize_job_control to turn off job control if the terminal - pgrp == -1 or is not equal to shell_pgrp (with an error message) - - in initialize_job_control, if the shell has been forced interactive - with -i, make sure stderr is hooked to a tty before using it as - the controlling terminal. If it's not, try to open /dev/tty and - assign it to shell_tty. Fixes problems reported by Derek Fawcus - - - 6/13 - ---- -support/shobj-conf - - changes to support shared object and shared library creation on AIX - 5.x and later versions. From Niklas Edmundsson - - 6/17 - ---- -builtins/mkbuiltins.c - - new array of builtins, posix_builtins, containing builtins listed - as special to the command search order by POSIX - - add POSIX_BUILTIN to the builtin flags if the builtin name is one - that's special to the posix command search order - -builtins.h - - new define, POSIX_BUILTIN, means that a builtin is special to the - posix command search order - - 6/22 - ---- -lib/readline/display.c - - new macro, WRAP_OFFSET, intended to replace W_OFFSET. Takes prompt - strings longer than one physical line with invisible characters on - the second line into account when calculating the number of - invisible characters on the current screen line - - use WRAP_OFFSET where appropriate (update_line, _rl_move_cursor_relative) - - change update_line to deal with adjusting _rl_last_c_pos in a - multibyte environment when the prompt has invisible chars on the - second line and redisplay has output the invisible characters - - change _rl_move_cursor_relative to adjust _rl_last_c_pos in a - multibyte environment when the prompt has invisible chars on the - second line and the redisplay draws the invisible character. Fixes - redisplay bug reported by Andreas Schwab - - - 7/11 - ---- - -lib/readline/rltty.c - - enable flush-output code for systems other than AIX 4.1. Problem - reported by Jan Kratochvil - - 7/12 - ---- -lib/readline/display.c - - set prompt_invis_chars_first_line from the portion of the prompt - following the final newline, instead of from the prefix. Fixes - bug reported on the Ubuntu bug list by dAniel hAhler - - - 7/13 - ---- -variables.c - - use native __QNX__ and __QNXNTO__ cpp defines instead of qnx and - qnx6, respectively. Patch from Sean Boudreau - -lib/sh/getcwd.c - - #undef HAVE_LSTAT on qnx, so it uses stat instead. Patch from - Sean Boudreau - - 7/21 - ---- -builtins/common.c - - change sh_invalidnum to be a little smarter about octal and hex - numbers and change the message appropriately. Bug originally - reported on coreutils list by Jürgen Niinre - - 7/26 - ---- -test.c - - make sure the string passed to test_unop has only a single character - following the `-'. Fixes bug reported by Michael A. Smith - - -parse.y - - better input validation: make sure a word looks like a conditional - unary operator (-X) before calling test_unop - - 7/28 - ---- -trap.c - - in trap_handler, if it's called directly from the signal handler - (e.g., SIGINT sighandler, set by set_sigint_handler), but the - trap disposition has been reset to the default between the - assignment and receipt of the signal, check that the signal is - trapped and issue a warning if the shell was compiled with - debugging enabled. Fixes bug reported by Fergus Henderson - - - 8/1 - --- -lib/readline/{util,histexpand}.c - - fixes for small memory leaks from Michael Snyder - - 8/18 - ---- -Makefile.in - - add dependency on builtins/builtext.h to nojobs.o list. Fixes - `make -j 5' issue reported by Chris MacGregor - -examples/loadables/Makefile.in - - add @LDFLAGS@ to SHOBJ_LDFLAGS assignment -- experimental. Suggested - by Mike Frysinger - -examples/loadables/{basename,cut,dirname,finfo,head,ln,logname,mkdir,pathchk,print,printenv,push,realpath,rmdir,sleep,tee,truefalse,tty,uname,unlink,whoami}.c - - fix up some includes. Fix from Mike Frysinger - - 8/21 - ---- -histexpand.c - - fix another memory leak in history_find_word. Bug report originally - from Michael Snyder ; test case suggested by Jim - Blandy - - 8/26 - ---- -subst.c - - change to do_assignment_internal to make an assignment to a variable - with the `noassign' internal attribute not a variable assignment - error. - - fix do_assignment_internal so assignment to a `noassign' variable - does not cause it to suddenly become visible if it's currently - invisible - - 9/3 - --- -stringlib.c - - change strsub to check whether or not temp is non-null before - trying to null-terminate it. Also make sure temp is allocated - even if the pattern and replacement strings are empty, and set - to a copy of string (like ${foo//}) - Bug report from Timo Lindfors - - 9/10 - ---- -{config.h,Makefile,configure}.in,aclocal.m4 - - new tests for fpurge and __fpurge - -lib/sh/fpurge.c, externs.h - - new file, fpurge(3) implementation with external decl in externs.h - -builtins/common.c - - add call to fpurge(stdout) to sh_chkwrite - -{redir,execute_cmd}.c - - add call to fpurge(stdout) after fflush(stdout) before changing - stdout file descriptor and after a builtin or function executes - - 9/12 - ---- -expr.c - - make sure noeval is set to 0 when a longjmp occurs, since it will - not be reset otherwise, and it can be set to 1 while processing - a {pre,post}-increment or {pre,post}-decrement token - - set noeval to 0 at the beginning of evalexp, since it's never - called recursively - - 9/14 - ---- -config-top.h - - new builder-modifiable define: DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS - Turning it on will cause errors from EPIPE to not be reported by - the normal shell write error message mechanism - -builtins/common.c - - if DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS is defined, don't print an - error message from sh_wrerror if errno == EPIPE. Suggestion from - Petr Sumbera - - 9/19 - ---- -{jobs,nojobs}.c,jobs.h - - add code to retry fork() after EAGAIN, with a progressively longer - sleep between attempts, up to FORKSLEEP_MAX (16) seconds. Suggested - by Martin Koeppe - - 9/21 - ---- -version.c - - change copyright year to 2007 - - 9/25 - ---- -pathexp.c - - change quote_string_for_globbing to add a backslash in front of a - backslash appearing in the pathname string, since the globbing - code will interpret backslashes as quoting characters internally. - Bug reported by on the debian list - (443685) - - 10/8 - ---- -lib/readline/display.c - - in update_line, make sure _rl_last_c_pos is > 0 before setting - cpos_adjusted (or we actually moved the cursor to column 0 in - _rl_move_cursor_relative). Fixes redisplay bug with prompt with - only invisible characters reported by dAniel hAhler - - - 10/10 - ----- -lib/readline/display.c - - in rl_redisplay, when calculating the new physical cursor position - in a multibyte locale (`tx'), do not call rl_backspace if tx ends - up < 0. Rest of fix for bug reported by dAniel hAhler - - - 10/12 - ----- -lib/sh/getcwd.c - - fix memory overwrite problem that's possible if buf is NULL and - passed size is greater than the pathname length. Reported by - Ian Campbell - -builtins/ulimit.def - - change the multiplier for the -c and -f options (`blocks') to 512, - the traditional value (and the one POSIX specifies). Bug reported - by Pete Graner - -braces.c - - pass process substitution through unchanged the same as command - substitution. Prompted by suggestion from Stephane Chazelas - - -lib/readline/input.c - - in rl_unget_char, fix off-by-one error when resetting pop_index if - it's < 0. Bug reported by Uwe Doering - -builtins/type.def - - change exit status of `type' to not successful if any of the - requested commands are not found. Reported by Stephane Chazleas - - -pcomplete.c - - change command_line_to_word_list to use rl_completer_word_break_characters - instead of the shell metacharacters to split words, so programmable - completion does the same thing readline does internally. Reported - by Vasily Tarasov - - 10/16 - ----- -bashline.c - - When completing a command name beginnig with a tilde and containing - escaped specical characters, dequote the filename before prefixing - it to the matches, so the escapes are not quoted again. Reported - by neil@s-z.org - - 10/17 - ----- -expr.c - - in readtok(), don't reset lasttp if we've consumed the whitespace - at the end of the expression string. Fixes error message problem - reported by - - 11/1 - ---- -builtins/printf.def - - change asciicode() to return intmax_t; add multibyte character - support instead of assuming ASCII (depending on behavior of system - multibyte support functions). Fixes bug reported by Rich - Felker - - 11/5 - ---- -execute_cmd.c - - if redirections attached to a compound command fail, make sure to - set last_command_exit_value when returning EXECUTION_FAILURE. - Fixes bug reported separately by Andreas Schwab - and Paul Eggert - - 11/9 - ---- -builtins/read.def - - make sure the return value from get_word_from_string is freed if - non-null. Fixes memory leak bug reported by Lars Ellenberg - - - 11/10 - ----- -variables.c - - use getpid() as value of seeded_subshell to avoid problems with - random number generator not getting re-seeded correctly when - subshells are created. Fix from Tomas Janousek - -lib/readline/display.c - - in update_line(), when outputting characters at the end of the line, - e.g., when displaying the prompt string, adjust _rl_last_c_pos by - wrap_offset if the text we're drawing begins before the last - invisible character in the line. Similar to fix from 5/24. Fixes - bug reported by Miroslav Lichvar - - 11/14 - ----- -subst.c - - fix $[ expansion case to deal with extract_arithmetic_subst - returning NULL (if the `]' is missing) and return the construct - unchanged in that case. Fixes tab completion bug reported by - Heikki Hokkanen (debian bug 451263) - -lib/readline/mbutil.c - - fix _rl_find_next_mbchar_internal to deal with invalid multibyte - character sequences when finding non-zero-length chars. Fixes - bug reported by Morita Sho - - 11/15 - ----- -variables.c - - add new function `seedrand' to seed the bash random number - generator from more random data. Suggestion from Steve Grubb - - - replace the rng in brand() with a slightly better one from FreeBSD - (filtered through Mac OS X 10.5). Replacement suggested by - Steve Grubb - - 11/21 - ----- -configure.in - - darwin 9 also requires linking against libreadline.a and - libhistory.a because of Apple's questionable decision to ship a - libreadline "replacement" that doesn't provide all functions - -doc/{bash.1,bashref.texi} - - slight change to the text describing the effect of set -e when - in a || or && list - - 12/5 - ---- -jobs.c - - fix raw_job_exit_status to correct mixing of int/WAIT values (need - to return a WAIT) - - arrange so that children run as part of command substitutions also - set the SIGINT handler to wait_sigint_handler, since they effectively - don't do job control - - in wait_for, if a child run as part of a command substitution exits - due to SIGINT, resend the SIGINT to the waiting shell with kill(2). - This makes sure the exit status propagates - -doc/{bash.1,bashref.texi} - - tighten up the language describing when bash tries to see if its - stdin is a socket, so it can run the startup files. Suggested by - Vincent Lefevre - -eval.c - - in the DISCARD case of a longjmp to top_level, make sure - last_command_exit_value is set to EXECUTION_FAILURE if it's 0, - but leave existing non-zero values alone - -subst.c - - in command_substitute, don't reset pipeline_pgrp in the child - process -- this means that second and subsequent children spawned by - this comsub shell get put into the wrong process group, not the - shell's. Fix for bug reported by Ingo Molnar - - 12/6 - ---- -support/shobj-conf - - make sure the cases for darwin8.x (Mac OS X 10.4.x) are extended to - darwin9.x (Mac OS X 10.5.x). Fixes problem originally reported - against readline-5.2 by schneecrash@gmail.com - - 12/8 - ---- -subst.c - - make sure to add the results of (successful) tilde expansion as a - quoted string, to inhibit pathname expansion and word splitting. - From recent Austin Group interpretation. - -include/shtty.h, lib/sh/shtty.c - - add ttfd_onechar, ttfd_noecho, ttfd_eightbit, ttfd_nocanon, and - ttfd_cbreak to set tty attributes associated with a particular - file descriptor (which is presumed to point to a terminal). Support - for fix for bug reported by b_bashbug@thebellsplace.com - -lib/readline/display.c - - make sure we only use rl_invis_chars_first_line when the number of - physical characters exceeds the screen width, since that's the - only time expand_prompt sets it to a valid value - - 12/12 - ----- -builtins/set.def - - change set_minus_o_option to return EX_USAGE if an invalid option - name is supplied. All callers can handle it. - - change set_builtin to return what set_minus_o_option returns if it's - not EXECUTION_SUCCESS. This allows EX_USAGE errors to abort a - shell running in posix mode - - 12/14 - ----- -builtins/read.def - - generalize the calls to the tty attribute functions to maintain a - local copy of the terminal attributes and use the fd supplied as - the argument to the -u option (default 0). Fix for bug reported - by b_bashbug@thebellsplace.com - -doc/bashref.texi, lib/readline/doc/{history,rlman,rluser,rluserman}.texi - - Slight changes to conform to the latest FSF documentation standards. - Patch from Karl Berry - - 12/20 - ----- -execute_cmd.c - - after calling clear_unwind_protect_list, make sure we reset - parse_and_execute_level to 0, since there's nothing left to - restore it if top_level_cleanup tests it. Fixes bug reported - by Len Lattanzi - - 12/31 - ----- -lib/sh/getcwd.c - - new function, _path_checkino, checks whether the inode corresponding - to the path constructed from the first two arguments is the same as - the inode number passed as the third argument - - if BROKEN_DIRENT_D_INO is defined, meaning the d_ino/d_fileno - member of struct dirent doesn't contain valid values, use - _path_checkino instead of directly comparing against d_fileno. - Fixes Interix problem reported by Michael Haubenwallner - - - 1/7/2008 - -------- -array.c - - fix array_subrange to separate elements in returned string with - first char of $IFS if QUOTED is non-zero, since this indicates - the caller used ${array[@]:foo}. Fixes bug reported by Lea - Wiemann - - 1/8 - --- -subst.c - - new function returning a string containing the first character of - $IFS: char *ifs_firstchar(int *) - -subst.h - - extern declaration for ifs_firstchar() - -array.c - - call ifs_firstchar() to get first character of $IFS when needed - (array_subrange() and array_patsub()) - - 1/11 - ---- -lib/readline/display.c - - use sentinel variable set at end of init_line_structures to decide - whether to call it from rl_redisplay, since early SIGWINCH on - Mac OS X that hits during this function can cause _rl_wrapped_line - to be referenced before initialization. Fix for bug reported by - Len Lattanzi - -subst.[ch] - - skip_to_delim is now compiled into the shell all the time, not just - when readline is linked in - -subst.c - - use skip_to_delim to find the `/' denoting the end of a pattern - in pattern substitution, since it knows more shell syntax than - quoted_strchr and understands multibyte characters. Fixes bug - reported by Dmitry V Golovashkin - - 1/15 - ---- -subst.c - - add `flags' argument to skip_to_delim telling it whether or not to - set no_longjmp_on_fatal_error; set this flag when calling from the - readline completion code - -subst.h - - update extern declaration for skip_to_delim - - 1/17 - ---- -subst.c - - expand_prompt_string takes a third argument: the initial flags for - the WORD - -subst.h - - change extern declaration for expand_prompt_string to add third arg - -bashline.c - - pass W_NOCOMSUB as third argment to expand_prompt_string when - calling from bash_directory_completion_hook, since we don't want - to do command substitution from the completion code - -parse.y - - change call to expand_prompt_string - - 1/18 - ---- -doc/Makefile.in - - added an `install_builtins' rule to install the builtins.1 man page, - preprocessing it with sed to force `.so man1/bash.1', which some - versions of man require. Suggestion from Peter Breitenlohner - - - new target `install_everything' that will install normal documentation - and builtins man page - - changed uninstall target to remove bash_builtins page from man - directory - -lib/readline/vi_mode.c - - new function, rl_vi_insert_mode, which calls rl_vi_start_inserting - to make sure the value of `last command to repeat' is set correctly. - Fix from Thomas Janousek - - add support for redoing inserts made with the `I' command. Fix - from Thomas Janousek - - add support for redoing inserts made with the `A' command - -lib/readline/readline.h - - new extern declaration for rl_vi_insert_mode - -lib/readline/{misc,readline,vi_mode,vi_keymap}.c - - change calls to rl_vi_insertion_mode to rl_vi_insert_mode - - 1/19 - ---- -builtins/read.def - - change timeout behavior when not reading from a tty device to save - any partial input in the variable list, but still return failure. - Fix inspired by Brian Craft - - 1/21 - ---- -builtins/fc.def - - cha diff --git a/bash-20060316/-i b/bash-20060316/-i deleted file mode 100644 index e69de29bb..000000000 diff --git a/bash-20060316/.DS_Store b/bash-20060316/.DS_Store deleted file mode 100644 index 88f4b3bc519ffc2876901595a5c9fe2eac3a824b..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 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 diff --git a/bash-20060316/.gdb_history b/bash-20060316/.gdb_history deleted file mode 100644 index ff604669b..000000000 --- a/bash-20060316/.gdb_history +++ /dev/null @@ -1 +0,0 @@ -quit diff --git a/bash-20060316/ABOUT-NLS b/bash-20060316/ABOUT-NLS deleted file mode 100644 index 47d5e39f0..000000000 --- a/bash-20060316/ABOUT-NLS +++ /dev/null @@ -1,625 +0,0 @@ -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 deleted file mode 100644 index a44e906e4..000000000 --- a/bash-20060316/AUTHORS +++ /dev/null @@ -1,458 +0,0 @@ -# -# 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 deleted file mode 100644 index 178a55fec..000000000 --- a/bash-20060316/CHANGES +++ /dev/null @@ -1,5287 +0,0 @@ -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 deleted file mode 100644 index df64c03da..000000000 --- a/bash-20060316/COMPAT +++ /dev/null @@ -1,258 +0,0 @@ -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 deleted file mode 100644 index 2b940a412..000000000 --- a/bash-20060316/COPYING +++ /dev/null @@ -1,347 +0,0 @@ - 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 deleted file mode 100644 index e69de29bb..000000000 diff --git a/bash-20060316/CWRU/CWRU.chlog b/bash-20060316/CWRU/CWRU.chlog deleted file mode 100644 index ab7090f57..000000000 --- a/bash-20060316/CWRU/CWRU.chlog +++ /dev/null @@ -1,13206 +0,0 @@ - 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/OS-BUGS/att-yacc-bug b/bash-20060316/CWRU/OS-BUGS/att-yacc-bug deleted file mode 100644 index 4c1370b0f..000000000 --- a/bash-20060316/CWRU/OS-BUGS/att-yacc-bug +++ /dev/null @@ -1,111 +0,0 @@ -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 deleted file mode 100644 index 54712d466..000000000 --- a/bash-20060316/CWRU/OS-BUGS/bsd-rshd-bug +++ /dev/null @@ -1,46 +0,0 @@ -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 deleted file mode 100644 index 2083e7c62..000000000 --- a/bash-20060316/CWRU/OS-BUGS/bsd-tty-driver +++ /dev/null @@ -1,38 +0,0 @@ -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 deleted file mode 100644 index 7c9a34153..000000000 --- a/bash-20060316/CWRU/OS-BUGS/hpux-ulimit-bug +++ /dev/null @@ -1,3 +0,0 @@ -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 deleted file mode 100644 index 5acf4165b..000000000 --- a/bash-20060316/CWRU/OS-BUGS/isc-posix-bug +++ /dev/null @@ -1,137 +0,0 @@ -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 deleted file mode 100644 index 09d0c3131..000000000 --- a/bash-20060316/CWRU/OS-BUGS/next-rlogind-bug +++ /dev/null @@ -1,63 +0,0 @@ -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 deleted file mode 100644 index 7378d3c2c..000000000 --- a/bash-20060316/CWRU/OS-BUGS/sco-3.2.4-bug +++ /dev/null @@ -1,57 +0,0 @@ -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 deleted file mode 100644 index 7676d495b..000000000 --- a/bash-20060316/CWRU/OS-BUGS/sequent-fcntl-dup2-bug +++ /dev/null @@ -1,28 +0,0 @@ -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 deleted file mode 100644 index 5b84ec007..000000000 --- a/bash-20060316/CWRU/OS-BUGS/sun-yp-bug +++ /dev/null @@ -1,52 +0,0 @@ -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 deleted file mode 100644 index f9fb82c6c..000000000 --- a/bash-20060316/CWRU/OS-BUGS/ultrix-bugs +++ /dev/null @@ -1,74 +0,0 @@ -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 deleted file mode 100644 index f05caff56..000000000 --- a/bash-20060316/CWRU/PLATFORMS +++ /dev/null @@ -1,31 +0,0 @@ -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/README b/bash-20060316/CWRU/README deleted file mode 100644 index 7d7ca1ab3..000000000 --- a/bash-20060316/CWRU/README +++ /dev/null @@ -1,20 +0,0 @@ -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 deleted file mode 120000 index d2d81b302..000000000 --- a/bash-20060316/CWRU/changelog +++ /dev/null @@ -1 +0,0 @@ -CWRU.chlog \ No newline at end of file diff --git a/bash-20060316/CWRU/history-syslog.1 b/bash-20060316/CWRU/history-syslog.1 deleted file mode 100644 index d5240d371..000000000 --- a/bash-20060316/CWRU/history-syslog.1 +++ /dev/null @@ -1,47 +0,0 @@ -#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 deleted file mode 100644 index 905000c7a..000000000 --- a/bash-20060316/CWRU/mh-folder-comp +++ /dev/null @@ -1,449 +0,0 @@ -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 deleted file mode 100755 index 5dcd3a89d..000000000 --- a/bash-20060316/CWRU/misc/bison +++ /dev/null @@ -1,26 +0,0 @@ -#! /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 deleted file mode 100644 index 3780dec3d..000000000 --- a/bash-20060316/CWRU/misc/copyright +++ /dev/null @@ -1,17 +0,0 @@ -/* 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 deleted file mode 100644 index 3970ba193..000000000 --- a/bash-20060316/CWRU/misc/errlist.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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 deleted file mode 100644 index f5dd39bba..000000000 --- a/bash-20060316/CWRU/misc/getwd.bsd44.c +++ /dev/null @@ -1,254 +0,0 @@ -/* - * 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 deleted file mode 100644 index 69b626ede..000000000 --- a/bash-20060316/CWRU/misc/hpux10-dlfcn.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * 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 deleted file mode 100644 index b9d1e2acb..000000000 --- a/bash-20060316/CWRU/misc/iptrt.c +++ /dev/null @@ -1,12 +0,0 @@ -#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 deleted file mode 100644 index 88cae1a8b..000000000 --- a/bash-20060316/CWRU/misc/nofd0.c +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100644 index aa4ab0741..000000000 --- a/bash-20060316/CWRU/misc/open-files.c +++ /dev/null @@ -1,35 +0,0 @@ -/* 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 deleted file mode 100644 index f5201280d..000000000 --- a/bash-20060316/CWRU/misc/pcat.c +++ /dev/null @@ -1,239 +0,0 @@ -/* $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 deleted file mode 100644 index 507da56bb..000000000 --- a/bash-20060316/CWRU/misc/pgrp.c +++ /dev/null @@ -1,13 +0,0 @@ -#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 deleted file mode 100644 index 458fde435..000000000 --- a/bash-20060316/CWRU/misc/pid.c +++ /dev/null @@ -1,7 +0,0 @@ -#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 deleted file mode 100644 index 2c16935f8..000000000 --- a/bash-20060316/CWRU/misc/sigs.c +++ /dev/null @@ -1,47 +0,0 @@ -/* 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 deleted file mode 100644 index 2252a8573..000000000 --- a/bash-20060316/CWRU/misc/sigstat.c +++ /dev/null @@ -1,226 +0,0 @@ -/* - * 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 deleted file mode 100644 index f1ec1dc47..000000000 --- a/bash-20060316/CWRU/misc/stderr.c +++ /dev/null @@ -1,12 +0,0 @@ -#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 deleted file mode 100644 index e76f93a53..000000000 --- a/bash-20060316/CWRU/misc/test-strtod.c +++ /dev/null @@ -1,33 +0,0 @@ -#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 deleted file mode 100644 index 6b7b53355..000000000 --- a/bash-20060316/CWRU/new/execute_cmd.c.lastpipe-first +++ /dev/null @@ -1,3176 +0,0 @@ -/* 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 deleted file mode 100644 index c7637b59b..000000000 --- a/bash-20060316/CWRU/old-changelogs/CHANGES.051093 +++ /dev/null @@ -1,115 +0,0 @@ -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 deleted file mode 100644 index 6d24c8f77..000000000 --- a/bash-20060316/CWRU/old-changelogs/CHANGES.071193 +++ /dev/null @@ -1,63 +0,0 @@ -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 deleted file mode 100644 index f38e5f219..000000000 --- a/bash-20060316/CWRU/old-changelogs/CHANGES.090393 +++ /dev/null @@ -1,140 +0,0 @@ -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 deleted file mode 100644 index 9fe2a7ae5..000000000 --- a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v10 +++ /dev/null @@ -1,3177 +0,0 @@ - -[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 deleted file mode 100644 index 163247e06..000000000 --- a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v11 +++ /dev/null @@ -1,8400 +0,0 @@ - 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 deleted file mode 100644 index dc687d4d9..000000000 --- a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v12 +++ /dev/null @@ -1,10049 +0,0 @@ - 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 deleted file mode 100644 index a494dd396..000000000 --- a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v2 +++ /dev/null @@ -1,584 +0,0 @@ - -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 deleted file mode 100644 index dade7146b..000000000 --- a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v4 +++ /dev/null @@ -1,234 +0,0 @@ -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 deleted file mode 100644 index 55b994c59..000000000 --- a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v5 +++ /dev/null @@ -1,1492 +0,0 @@ - - 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 deleted file mode 100644 index 3fb0fb178..000000000 --- a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v6 +++ /dev/null @@ -1,1010 +0,0 @@ -[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 deleted file mode 100644 index be260f07f..000000000 --- a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v7 +++ /dev/null @@ -1,671 +0,0 @@ -[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 deleted file mode 100644 index 2aa1437a3..000000000 --- a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v8 +++ /dev/null @@ -1,251 +0,0 @@ -[ 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 deleted file mode 100644 index d1474fbff..000000000 --- a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v9 +++ /dev/null @@ -1,5062 +0,0 @@ -[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 deleted file mode 100644 index 533131960..000000000 --- a/bash-20060316/CWRU/old-conf/Makefile +++ /dev/null @@ -1,116 +0,0 @@ -# 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 deleted file mode 100644 index 1d486e945..000000000 --- a/bash-20060316/CWRU/old-conf/Makefile.builtins +++ /dev/null @@ -1,268 +0,0 @@ -# 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 deleted file mode 100644 index 3096a51bd..000000000 --- a/bash-20060316/CWRU/old-conf/Makefile.documentation +++ /dev/null @@ -1,119 +0,0 @@ -# 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 deleted file mode 100644 index 467a510f5..000000000 --- a/bash-20060316/CWRU/old-conf/Makefile.lib.glob +++ /dev/null @@ -1,92 +0,0 @@ -## -*- 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 deleted file mode 100644 index c6a7b0eff..000000000 --- a/bash-20060316/CWRU/old-conf/Makefile.lib.malloc +++ /dev/null @@ -1,33 +0,0 @@ -# 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 deleted file mode 100644 index 7a12a1fd8..000000000 --- a/bash-20060316/CWRU/old-conf/Makefile.lib.readline +++ /dev/null @@ -1,154 +0,0 @@ -## -*- 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 deleted file mode 100644 index bbdf99f2a..000000000 --- a/bash-20060316/CWRU/old-conf/Makefile.lib.termcap +++ /dev/null @@ -1,64 +0,0 @@ -## -*- 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 deleted file mode 100644 index b3f4c26a9..000000000 --- a/bash-20060316/CWRU/old-conf/Makefile.lib.tilde +++ /dev/null @@ -1,94 +0,0 @@ -## -*- 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 deleted file mode 100644 index b805d0d2c..000000000 --- a/bash-20060316/CWRU/old-conf/config.h +++ /dev/null @@ -1,178 +0,0 @@ -/* 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 deleted file mode 100644 index 3c967ac55..000000000 --- a/bash-20060316/CWRU/old-conf/config.h.mini +++ /dev/null @@ -1,191 +0,0 @@ -/* 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 deleted file mode 100755 index 53e10b6e3..000000000 --- a/bash-20060316/CWRU/old-conf/configure +++ /dev/null @@ -1,8 +0,0 @@ -#!/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 deleted file mode 100644 index 3e8887a4e..000000000 --- a/bash-20060316/CWRU/old-conf/cpp-Makefile +++ /dev/null @@ -1,1379 +0,0 @@ -/* 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 deleted file mode 100644 index 3a6633892..000000000 --- a/bash-20060316/CWRU/old-conf/machines.h +++ /dev/null @@ -1,2314 +0,0 @@ -/* 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 deleted file mode 100644 index 87ba1634e..000000000 --- a/bash-20060316/CWRU/old-conf/support/cat-s +++ /dev/null @@ -1,16 +0,0 @@ -# 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 deleted file mode 100755 index b0a951c23..000000000 --- a/bash-20060316/CWRU/old-conf/support/cppmagic +++ /dev/null @@ -1,51 +0,0 @@ -#!/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 deleted file mode 100644 index e4cb04483..000000000 --- a/bash-20060316/CWRU/old-conf/support/getcppsyms.c +++ /dev/null @@ -1,427 +0,0 @@ -/* 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 deleted file mode 100755 index 95f28bc16..000000000 --- a/bash-20060316/CWRU/old-conf/support/inpath +++ /dev/null @@ -1,19 +0,0 @@ -#! /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 deleted file mode 100755 index b2bc5ca58..000000000 --- a/bash-20060316/CWRU/old-conf/support/mkmachtype +++ /dev/null @@ -1,282 +0,0 @@ -#!/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 deleted file mode 100755 index 05040d1c3..000000000 --- a/bash-20060316/CWRU/old-conf/support/mksysdefs +++ /dev/null @@ -1,489 +0,0 @@ -#!/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 deleted file mode 100755 index 9d8ccd71b..000000000 --- a/bash-20060316/CWRU/old-conf/support/srcdir +++ /dev/null @@ -1,13 +0,0 @@ -#! /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 deleted file mode 100644 index 8d19d88de..000000000 --- a/bash-20060316/CWRU/old/KSH.README +++ /dev/null @@ -1,136 +0,0 @@ - -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 deleted file mode 100644 index f38e5f219..000000000 --- a/bash-20060316/CWRU/old/RELEASE.113 +++ /dev/null @@ -1,140 +0,0 @@ -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 deleted file mode 100644 index 6a3498b20..000000000 --- a/bash-20060316/CWRU/old/RSH.README +++ /dev/null @@ -1,54 +0,0 @@ - -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 deleted file mode 100644 index 1bd14b5e9..000000000 --- a/bash-20060316/CWRU/old/array.doc +++ /dev/null @@ -1,53 +0,0 @@ -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 deleted file mode 100755 index 7d74c086d..000000000 --- a/bash-20060316/CWRU/old/fixlib +++ /dev/null @@ -1,87 +0,0 @@ - -# 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 deleted file mode 100644 index f319a71f5..000000000 --- a/bash-20060316/CWRU/old/histctl.def +++ /dev/null @@ -1,110 +0,0 @@ -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 deleted file mode 100644 index 56ec91ca1..000000000 --- a/bash-20060316/CWRU/old/longsig.c +++ /dev/null @@ -1,50 +0,0 @@ -/* 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 deleted file mode 100755 index 612aa99ae..000000000 --- a/bash-20060316/CWRU/old/mklinks +++ /dev/null @@ -1,41 +0,0 @@ - -# 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 deleted file mode 100755 index 88097f5db..000000000 --- a/bash-20060316/CWRU/old/mktarfile +++ /dev/null @@ -1,74 +0,0 @@ -#!/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 deleted file mode 100644 index 8164a8fec..000000000 --- a/bash-20060316/CWRU/old/mkversion.c +++ /dev/null @@ -1,305 +0,0 @@ -/* 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 deleted file mode 100644 index ee2baa30b..000000000 --- a/bash-20060316/CWRU/old/pagesize.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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 deleted file mode 100755 index 08a29355f..000000000 --- a/bash-20060316/CWRU/old/pagesize.sh +++ /dev/null @@ -1,20 +0,0 @@ -#! /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 deleted file mode 100644 index 1e8921a72..000000000 --- a/bash-20060316/CWRU/old/parse.y.noctlnul +++ /dev/null @@ -1,3163 +0,0 @@ -/* 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 deleted file mode 100644 index 681138422..000000000 --- a/bash-20060316/CWRU/old/read.def.stdio +++ /dev/null @@ -1,293 +0,0 @@ -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/subst.c.noctlnul b/bash-20060316/CWRU/old/subst.c.noctlnul deleted file mode 100644 index b6621c0d0..000000000 --- a/bash-20060316/CWRU/old/subst.c.noctlnul +++ /dev/null @@ -1,5659 +0,0 @@ -/* 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 deleted file mode 100644 index 74f45aeed..000000000 --- a/bash-20060316/CWRU/posix-parser/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -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 deleted file mode 100644 index bd8c8c9fa..000000000 --- a/bash-20060316/CWRU/posix-parser/aux.c +++ /dev/null @@ -1,231 +0,0 @@ -#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 deleted file mode 100644 index a7586a7de..000000000 --- a/bash-20060316/CWRU/posix-parser/command.h +++ /dev/null @@ -1,179 +0,0 @@ -/* 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 deleted file mode 100644 index 19d49be5a..000000000 --- a/bash-20060316/CWRU/posix-parser/copy.c +++ /dev/null @@ -1,279 +0,0 @@ -/* 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 deleted file mode 100644 index ebbf6d6e7..000000000 --- a/bash-20060316/CWRU/posix-parser/endian.h +++ /dev/null @@ -1,9 +0,0 @@ -/* 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 deleted file mode 100644 index 217539189..000000000 --- a/bash-20060316/CWRU/posix-parser/main.c +++ /dev/null @@ -1,97 +0,0 @@ -#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 deleted file mode 100644 index cc49b186f..000000000 --- a/bash-20060316/CWRU/posix-parser/make.c +++ /dev/null @@ -1,596 +0,0 @@ -/* 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 deleted file mode 100644 index df7faba2a..000000000 --- a/bash-20060316/CWRU/posix-parser/parse.y +++ /dev/null @@ -1,1932 +0,0 @@ -/* 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 deleted file mode 100644 index 9fb14422b..000000000 --- a/bash-20060316/CWRU/posix-parser/shell.h +++ /dev/null @@ -1,71 +0,0 @@ -/* 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 deleted file mode 100644 index a33476724..000000000 --- a/bash-20060316/CWRU/save/unwind_prot.c.sighandling +++ /dev/null @@ -1,294 +0,0 @@ -/* 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/sh-redir-hack b/bash-20060316/CWRU/sh-redir-hack deleted file mode 100644 index 413b29796..000000000 --- a/bash-20060316/CWRU/sh-redir-hack +++ /dev/null @@ -1,15 +0,0 @@ -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 deleted file mode 100644 index 4dfaa0d92..000000000 --- a/bash-20060316/INSTALL +++ /dev/null @@ -1,393 +0,0 @@ -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 deleted file mode 100644 index 989dbe265..000000000 --- a/bash-20060316/MANIFEST +++ /dev/null @@ -1,990 +0,0 @@ -# -# 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 deleted file mode 100644 index 736ad5b5e..000000000 --- a/bash-20060316/MANIFEST.doc +++ /dev/null @@ -1,24 +0,0 @@ -# -# 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 deleted file mode 100644 index 4882c5267..000000000 --- a/bash-20060316/Makefile.in +++ /dev/null @@ -1,1457 +0,0 @@ -# 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 deleted file mode 100644 index 977d9a335..000000000 --- a/bash-20060316/NEWS +++ /dev/null @@ -1,1179 +0,0 @@ -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 deleted file mode 100644 index c523752fe..000000000 --- a/bash-20060316/NOTES +++ /dev/null @@ -1,333 +0,0 @@ -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 deleted file mode 100644 index f8c983ea2..000000000 --- a/bash-20060316/POSIX +++ /dev/null @@ -1,179 +0,0 @@ -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 deleted file mode 100644 index 0e5c10b3e..000000000 --- a/bash-20060316/RBASH +++ /dev/null @@ -1,49 +0,0 @@ -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 deleted file mode 100644 index 3f6a09246..000000000 --- a/bash-20060316/README +++ /dev/null @@ -1,90 +0,0 @@ -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 deleted file mode 100644 index d12e3525d..000000000 --- a/bash-20060316/Y2K +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index b9539591e..000000000 --- a/bash-20060316/aclocal.m4 +++ /dev/null @@ -1,3962 +0,0 @@ -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 deleted file mode 100644 index 1aa9cb11b..000000000 --- a/bash-20060316/alias.c +++ /dev/null @@ -1,574 +0,0 @@ -/* 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 deleted file mode 100644 index b70b3ec0e..000000000 --- a/bash-20060316/alias.h +++ /dev/null @@ -1,70 +0,0 @@ -/* 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 deleted file mode 100644 index c32b61344..000000000 --- a/bash-20060316/array.c +++ /dev/null @@ -1,932 +0,0 @@ -/* - * 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 deleted file mode 100644 index 8c671b79e..000000000 --- a/bash-20060316/array.h +++ /dev/null @@ -1,111 +0,0 @@ -/* 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 deleted file mode 100644 index 1353b2d94..000000000 --- a/bash-20060316/arrayfunc.c +++ /dev/null @@ -1,817 +0,0 @@ -/* 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 deleted file mode 100644 index 3c4f9a074..000000000 --- a/bash-20060316/arrayfunc.h +++ /dev/null @@ -1,55 +0,0 @@ -/* 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 deleted file mode 100644 index 4b7ad7610..000000000 --- a/bash-20060316/autom4te-2.53.cache/output.0 +++ /dev/null @@ -1,24653 +0,0 @@ -@%:@! /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 deleted file mode 100644 index 2a56e70d9..000000000 --- a/bash-20060316/autom4te-2.53.cache/requests +++ /dev/null @@ -1,94 +0,0 @@ -# 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 deleted file mode 100644 index ccb4ebc5c..000000000 --- a/bash-20060316/autom4te-2.53.cache/traces.0 +++ /dev/null @@ -1,1194 +0,0 @@ -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 deleted file mode 100644 index d721800e8..000000000 --- a/bash-20060316/autom4te.cache/output.0 +++ /dev/null @@ -1,28494 +0,0 @@ -@%:@! /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 deleted file mode 100644 index 84e4075e3..000000000 --- a/bash-20060316/autom4te.cache/requests +++ /dev/null @@ -1,116 +0,0 @@ -# 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 deleted file mode 100644 index eb2242f1d..000000000 --- a/bash-20060316/autom4te.cache/traces.0 +++ /dev/null @@ -1,1821 +0,0 @@ -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 deleted file mode 100644 index e7f11585b..000000000 --- a/bash-20060316/bashansi.h +++ /dev/null @@ -1,41 +0,0 @@ -/* 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 deleted file mode 100644 index 6468a5383..000000000 --- a/bash-20060316/bashhist.c +++ /dev/null @@ -1,823 +0,0 @@ -/* 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 deleted file mode 100644 index 0a01d691e..000000000 --- a/bash-20060316/bashhist.h +++ /dev/null @@ -1,65 +0,0 @@ -/* 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 deleted file mode 100644 index 12068e484..000000000 --- a/bash-20060316/bashintl.h +++ /dev/null @@ -1,48 +0,0 @@ -/* 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 deleted file mode 100644 index f77e7b958..000000000 --- a/bash-20060316/bashjmp.h +++ /dev/null @@ -1,43 +0,0 @@ -/* 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 deleted file mode 100644 index cc330d084..000000000 --- a/bash-20060316/bashline.c +++ /dev/null @@ -1,3175 +0,0 @@ -/* 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 deleted file mode 100644 index eac5d3533..000000000 --- a/bash-20060316/bashline.h +++ /dev/null @@ -1,49 +0,0 @@ -/* 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 deleted file mode 100644 index 7409247c0..000000000 --- a/bash-20060316/bashtypes.h +++ /dev/null @@ -1,38 +0,0 @@ -/* 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 deleted file mode 100644 index 34fc91e8d..000000000 --- a/bash-20060316/bracecomp.c +++ /dev/null @@ -1,200 +0,0 @@ -/* 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 deleted file mode 100644 index 3f5c5e85f..000000000 --- a/bash-20060316/braces.c +++ /dev/null @@ -1,618 +0,0 @@ -/* 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 deleted file mode 100644 index f75e5038b..000000000 --- a/bash-20060316/builtins.h +++ /dev/null @@ -1,60 +0,0 @@ -/* 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 deleted file mode 100644 index e69de29bb..000000000 diff --git a/bash-20060316/builtins/ChangeLog b/bash-20060316/builtins/ChangeLog deleted file mode 100644 index e69de29bb..000000000 diff --git a/bash-20060316/builtins/Makefile.in b/bash-20060316/builtins/Makefile.in deleted file mode 100644 index e027f7aaa..000000000 --- a/bash-20060316/builtins/Makefile.in +++ /dev/null @@ -1,625 +0,0 @@ -# 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 deleted file mode 100644 index 572910bc4..000000000 --- a/bash-20060316/builtins/alias.def +++ /dev/null @@ -1,229 +0,0 @@ -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 deleted file mode 100644 index 4c8d907a9..000000000 --- a/bash-20060316/builtins/bashgetopt.c +++ /dev/null @@ -1,175 +0,0 @@ -/* 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 deleted file mode 100644 index 835797c15..000000000 --- a/bash-20060316/builtins/bashgetopt.h +++ /dev/null @@ -1,39 +0,0 @@ -/* 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 deleted file mode 100644 index 4711031e1..000000000 --- a/bash-20060316/builtins/bind.def +++ /dev/null @@ -1,320 +0,0 @@ -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 deleted file mode 100644 index e61d5027e..000000000 --- a/bash-20060316/builtins/break.def +++ /dev/null @@ -1,132 +0,0 @@ -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 deleted file mode 100644 index dfa58bc97..000000000 --- a/bash-20060316/builtins/builtin.def +++ /dev/null @@ -1,80 +0,0 @@ -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 deleted file mode 100644 index 5142cab9a..000000000 --- a/bash-20060316/builtins/caller.def +++ /dev/null @@ -1,152 +0,0 @@ -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 deleted file mode 100644 index 025e4f5e1..000000000 --- a/bash-20060316/builtins/cd.def +++ /dev/null @@ -1,525 +0,0 @@ -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 deleted file mode 100644 index a7cdc1250..000000000 --- a/bash-20060316/builtins/colon.def +++ /dev/null @@ -1,57 +0,0 @@ -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 deleted file mode 100644 index dbc1e9a14..000000000 --- a/bash-20060316/builtins/command.def +++ /dev/null @@ -1,207 +0,0 @@ -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 deleted file mode 100644 index 9d8f09ab4..000000000 --- a/bash-20060316/builtins/common.c +++ /dev/null @@ -1,811 +0,0 @@ -/* 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 deleted file mode 100644 index 1233d667a..000000000 --- a/bash-20060316/builtins/common.h +++ /dev/null @@ -1,163 +0,0 @@ -/* 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 deleted file mode 100644 index a859b88f0..000000000 --- a/bash-20060316/builtins/complete.def +++ /dev/null @@ -1,622 +0,0 @@ -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 deleted file mode 100644 index 4d94face6..000000000 --- a/bash-20060316/builtins/declare.def +++ /dev/null @@ -1,475 +0,0 @@ -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 deleted file mode 100644 index 6792659a7..000000000 --- a/bash-20060316/builtins/echo.def +++ /dev/null @@ -1,183 +0,0 @@ -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 deleted file mode 100644 index 823c38f9b..000000000 --- a/bash-20060316/builtins/enable.def +++ /dev/null @@ -1,474 +0,0 @@ -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 deleted file mode 100644 index 500e8c730..000000000 --- a/bash-20060316/builtins/eval.def +++ /dev/null @@ -1,53 +0,0 @@ -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 deleted file mode 100644 index 81be017bd..000000000 --- a/bash-20060316/builtins/evalfile.c +++ /dev/null @@ -1,320 +0,0 @@ -/* 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 deleted file mode 100644 index 04afac3d7..000000000 --- a/bash-20060316/builtins/evalstring.c +++ /dev/null @@ -1,353 +0,0 @@ -/* 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 deleted file mode 100644 index 0818a25e2..000000000 --- a/bash-20060316/builtins/exec.def +++ /dev/null @@ -1,229 +0,0 @@ -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 deleted file mode 100644 index ddaa5d315..000000000 --- a/bash-20060316/builtins/exit.def +++ /dev/null @@ -1,152 +0,0 @@ -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 deleted file mode 100644 index ebe368326..000000000 --- a/bash-20060316/builtins/fc.def +++ /dev/null @@ -1,631 +0,0 @@ -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 deleted file mode 100644 index c14381b6d..000000000 --- a/bash-20060316/builtins/fg_bg.def +++ /dev/null @@ -1,177 +0,0 @@ -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 deleted file mode 100644 index b223a76a9..000000000 --- a/bash-20060316/builtins/getopt.c +++ /dev/null @@ -1,308 +0,0 @@ -/* 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 deleted file mode 100644 index 7a4afb160..000000000 --- a/bash-20060316/builtins/getopt.h +++ /dev/null @@ -1,62 +0,0 @@ -/* 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 deleted file mode 100644 index a9aad62bd..000000000 --- a/bash-20060316/builtins/getopts.def +++ /dev/null @@ -1,323 +0,0 @@ -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 deleted file mode 100644 index 697ffd0a9..000000000 --- a/bash-20060316/builtins/hash.def +++ /dev/null @@ -1,273 +0,0 @@ -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 deleted file mode 100644 index 35a6de9cc..000000000 --- a/bash-20060316/builtins/help.def +++ /dev/null @@ -1,207 +0,0 @@ -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 deleted file mode 100644 index efee00521..000000000 --- a/bash-20060316/builtins/history.def +++ /dev/null @@ -1,415 +0,0 @@ -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 deleted file mode 100644 index 094c4b949..000000000 --- a/bash-20060316/builtins/inlib.def +++ /dev/null @@ -1,76 +0,0 @@ -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 deleted file mode 100644 index 4c3ba6a73..000000000 --- a/bash-20060316/builtins/jobs.def +++ /dev/null @@ -1,280 +0,0 @@ -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 deleted file mode 100644 index bedbb1a6d..000000000 --- a/bash-20060316/builtins/kill.def +++ /dev/null @@ -1,252 +0,0 @@ -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 deleted file mode 100644 index ab43a4542..000000000 --- a/bash-20060316/builtins/let.def +++ /dev/null @@ -1,128 +0,0 @@ -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 deleted file mode 100644 index ff0bdc090..000000000 --- a/bash-20060316/builtins/mkbuiltins.c +++ /dev/null @@ -1,1575 +0,0 @@ -/* 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 deleted file mode 100644 index e4e31704f..000000000 --- a/bash-20060316/builtins/printf.def +++ /dev/null @@ -1,997 +0,0 @@ -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 deleted file mode 100644 index dffc9c349..000000000 --- a/bash-20060316/builtins/psize-posix.c +++ /dev/null @@ -1,15 +0,0 @@ -#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 deleted file mode 100644 index 23abb6582..000000000 --- a/bash-20060316/builtins/psize.c +++ /dev/null @@ -1,79 +0,0 @@ -/* 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 deleted file mode 100644 index c4d73e1ad..000000000 --- a/bash-20060316/builtins/psize.sh +++ /dev/null @@ -1,45 +0,0 @@ -#! /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 deleted file mode 100644 index 86c0bddb5..000000000 --- a/bash-20060316/builtins/pushd.def +++ /dev/null @@ -1,754 +0,0 @@ -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 deleted file mode 100644 index e844906c1..000000000 --- a/bash-20060316/builtins/read.def +++ /dev/null @@ -1,779 +0,0 @@ -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 deleted file mode 100644 index e968ec7cf..000000000 --- a/bash-20060316/builtins/reserved.def +++ /dev/null @@ -1,203 +0,0 @@ -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 deleted file mode 100644 index 23389c070..000000000 --- a/bash-20060316/builtins/return.def +++ /dev/null @@ -1,66 +0,0 @@ -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 deleted file mode 100644 index 3bb327040..000000000 --- a/bash-20060316/builtins/set.def +++ /dev/null @@ -1,831 +0,0 @@ -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 deleted file mode 100644 index 28102bc47..000000000 --- a/bash-20060316/builtins/setattr.def +++ /dev/null @@ -1,441 +0,0 @@ -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 deleted file mode 100644 index e20b4d542..000000000 --- a/bash-20060316/builtins/shift.def +++ /dev/null @@ -1,96 +0,0 @@ -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 deleted file mode 100644 index ae100ace4..000000000 --- a/bash-20060316/builtins/shopt.def +++ /dev/null @@ -1,540 +0,0 @@ -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 deleted file mode 100644 index f9f812f89..000000000 --- a/bash-20060316/builtins/source.def +++ /dev/null @@ -1,174 +0,0 @@ -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 deleted file mode 100644 index d616d775b..000000000 --- a/bash-20060316/builtins/suspend.def +++ /dev/null @@ -1,119 +0,0 @@ -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 deleted file mode 100644 index e51d00b7a..000000000 --- a/bash-20060316/builtins/test.def +++ /dev/null @@ -1,146 +0,0 @@ -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 deleted file mode 100644 index 22304fc2f..000000000 --- a/bash-20060316/builtins/times.def +++ /dev/null @@ -1,115 +0,0 @@ -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 deleted file mode 100644 index 426833a15..000000000 --- a/bash-20060316/builtins/trap.def +++ /dev/null @@ -1,268 +0,0 @@ -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 deleted file mode 100644 index d03ccb2d9..000000000 --- a/bash-20060316/builtins/type.def +++ /dev/null @@ -1,405 +0,0 @@ -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 deleted file mode 100644 index 17898699f..000000000 --- a/bash-20060316/builtins/ulimit.def +++ /dev/null @@ -1,750 +0,0 @@ -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 deleted file mode 100644 index 489ca3305..000000000 --- a/bash-20060316/builtins/umask.def +++ /dev/null @@ -1,311 +0,0 @@ -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 deleted file mode 100644 index 22a92bea0..000000000 --- a/bash-20060316/builtins/wait.def +++ /dev/null @@ -1,177 +0,0 @@ -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 deleted file mode 100644 index de1a3edfc..000000000 --- a/bash-20060316/builtins/xkill.def +++ /dev/null @@ -1,249 +0,0 @@ -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 deleted file mode 100644 index 75e4990d0..000000000 --- a/bash-20060316/command.h +++ /dev/null @@ -1,346 +0,0 @@ -/* 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 deleted file mode 100644 index 7a90b1615..000000000 --- a/bash-20060316/config-top.h +++ /dev/null @@ -1,87 +0,0 @@ -/* 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 deleted file mode 100644 index 4ce6d8c5a..000000000 --- a/bash-20060316/config.h.in +++ /dev/null @@ -1,1016 +0,0 @@ -/* 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 deleted file mode 100755 index a227da7f4..000000000 --- a/bash-20060316/configure +++ /dev/null @@ -1,28494 +0,0 @@ -#! /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 deleted file mode 100755 index c5d6e6469..000000000 --- a/bash-20060316/configure.debug +++ /dev/null @@ -1,28094 +0,0 @@ -#! /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 deleted file mode 100644 index 4bfcc8cbd..000000000 --- a/bash-20060316/configure.in +++ /dev/null @@ -1,1109 +0,0 @@ -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 deleted file mode 100644 index 4a60b59ed..000000000 --- a/bash-20060316/configure.mk +++ /dev/null @@ -1,3 +0,0 @@ -# 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 deleted file mode 100644 index 280542dcd..000000000 --- a/bash-20060316/conftypes.h +++ /dev/null @@ -1,58 +0,0 @@ -/* 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 deleted file mode 100644 index d36436c9c..000000000 --- a/bash-20060316/copy_cmd.c +++ /dev/null @@ -1,422 +0,0 @@ -/* 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 deleted file mode 100644 index ea82f8579..000000000 --- a/bash-20060316/cross-build/beos-sig.h +++ /dev/null @@ -1,37 +0,0 @@ -/* 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 deleted file mode 100644 index 36948dae8..000000000 --- a/bash-20060316/cross-build/cygwin32.cache +++ /dev/null @@ -1,251 +0,0 @@ -# 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/opennt.cache b/bash-20060316/cross-build/opennt.cache deleted file mode 100644 index ca5e7cd70..000000000 --- a/bash-20060316/cross-build/opennt.cache +++ /dev/null @@ -1,169 +0,0 @@ -# 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 deleted file mode 100644 index 41e618232..000000000 --- a/bash-20060316/cross-build/win32sig.h +++ /dev/null @@ -1,256 +0,0 @@ -/* 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 deleted file mode 100644 index 351aa219a..000000000 --- a/bash-20060316/cross-build/x86-beos.cache +++ /dev/null @@ -1,45 +0,0 @@ -# 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 deleted file mode 100644 index ee2e68cdf..000000000 --- a/bash-20060316/dispose_cmd.c +++ /dev/null @@ -1,329 +0,0 @@ -/* 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 deleted file mode 100644 index 55723d4ea..000000000 --- a/bash-20060316/dispose_cmd.h +++ /dev/null @@ -1,40 +0,0 @@ -/* 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 deleted file mode 100644 index e69de29bb..000000000 diff --git a/bash-20060316/doc/.DS_Store b/bash-20060316/doc/.DS_Store deleted file mode 100644 index c08dc2508b4987d7abacbe43a689957fd793a9ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 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? diff --git a/bash-20060316/doc/FAQ b/bash-20060316/doc/FAQ deleted file mode 100644 index 71702653d..000000000 --- a/bash-20060316/doc/FAQ +++ /dev/null @@ -1,1806 +0,0 @@ -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 deleted file mode 100644 index 3d9657717..000000000 --- a/bash-20060316/doc/FAQ-2.05a +++ /dev/null @@ -1,1676 +0,0 @@ -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 deleted file mode 100644 index f0f3d1b6b..000000000 --- a/bash-20060316/doc/FAQ-2.05b +++ /dev/null @@ -1,1771 +0,0 @@ -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 deleted file mode 100644 index 1eb11627a..000000000 --- a/bash-20060316/doc/FAQ-3.0 +++ /dev/null @@ -1,1788 +0,0 @@ -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/INTRO b/bash-20060316/doc/INTRO deleted file mode 100644 index 29f208ace..000000000 --- a/bash-20060316/doc/INTRO +++ /dev/null @@ -1,187 +0,0 @@ - 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 deleted file mode 120000 index cdc927f6b..000000000 --- a/bash-20060316/doc/Makefile +++ /dev/null @@ -1 +0,0 @@ -/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 deleted file mode 100644 index 270ddfd79..000000000 --- a/bash-20060316/doc/Makefile.in +++ /dev/null @@ -1,291 +0,0 @@ -# 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 deleted file mode 100644 index e3a1d248f..000000000 --- a/bash-20060316/doc/README +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 517155a8b..000000000 --- a/bash-20060316/doc/article.ms +++ /dev/null @@ -1,1114 +0,0 @@ -.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 deleted file mode 100644 index d2aaf9e2c2ae7a660c4748f0f690f6599e1ce2d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 131900 zc-oA*Q;;T5w`H5QZQHhO+qP}nwr$(~(l#q?t5TKsbl?9(bjNw=w;6NAeqB4ph()d> zCPB~4zzRbSxJfL5;UHonax}4l;p1bJGk36bvm)aBuSSJY!rIQw+=Yly!p_*uT+H0m z(ac;x0LInL#oX8)#w#yfXU1b^5_#{M)`#;24;cdIK3m*`H)jkL@TT?jNY@4|EhQ!g zg2zWky<=y=ESU5?dV=d(Thj}i)N+hRNH|5dSOuup?Sy&j7y5VseCypW1aSL)GN^R! zZ86gPX}n2%HQ*l{$?S${>*?W6)%aNlw1 z{Cb;OJ8-r|S~TwBjO*uiJaba8u6kuI6v3^>HP+lQZ!>LAe85+4y&8 zIbL4xu4pGvKFJFND!&EtvF(30;P<((MsapKTVR`2XC8%_XD#Ayj~aVg#tx}6UJtNm zOe8axY{6X**w}E8jhqh<4y9}!=W_c|=oEVgO{j10-nrIY{;g5vH<^9p*Oaeap9?Tt z#cij(+9~d$S63&ci0rr_M*%*{+Hw_PEOGs_?Y&_9ltT9uTD`DSqUpKjP#H5?Os9hf zKrAcch-{(%tQk<>0|gm;-^9ijFCetRT_1W@jRrF=mheHhW3W-L({(1amSV}h>hB3g zeF+QXcZ}#@$XsyX#)U?~%B_XLa{j>d`o4EnuNqaVg&=%^%Ns)MV`J6q$%8Pksso}c zcy^bPz*6MHhd(_pXhj}hbTn3U9sS)_v+q6=q8Al34~@$lsQd|YWVm8i;@WQ|*zTzF z&76&M$&M@_)S~JO{CPSr)f?^N+j#1KQ{lm>{;LRxkTgi5Y(*nRkt|0q^ULJ>b6HbU zSa3xB>gM$w^~@U(_C~_*57tfDyrpqnA1u<{Y}9o!Ia*D}8^b&DldV(pRo}CzrUrV& zji=NYqYg;dZSxwV>>!2fUo_W$$n|kfIj{b(qkb&~-W^L0UC8iob8$WHo6mOnUVzje zwFQtt%uolOTrIzk(4DSiA7D+o;sE_!StW2mdESk!;~XqiLaZuSn^$8biB_q-a$h09 zSykVvE~a&i$nT+!4X}E=&+XW99r~SiLxD6v+GHDUkz0fXNds-fl8PK_xQ6z$mE3bx+Xk-`sHCL3z@$hd4)b~PKjQWI@eoE9U z9sHTWi36P;OaB^e*e%tHHE0qgXbBWf@#%JD1Op>qXJlkxSl!{wWDL~EyrE{k{~Fi^ z-k8+%q}o_>wB^3jX~-x5&k`$^7hee=L-}#tfrAViLge@V5$k&b?&Iq)!&h}hZv@-K z3CG@1+DoG+Vp-kQjL9dX0B4$LfJWSjaD+<^Zmd_Yri78J{Cmgr@UpQx$B$&#p6{2A zBcp5Q2v^nO6hqx~Rs+oFG(+?Xru|~Rv zCyE6Tj-~pFEVJfcQ@v6`;kDy31oK5!oO6xXck0# z^9^-l8}d_^QNkX@w#`-8#mEbj%sYt~jdAxui&>VSAuY^j=Z|fj3=dfvVMeYiu8Gnl zjBdN9kQLq?~-#W zUO!{(Wr|$lf16dQ_H|(g$g*7_1?~6mme4>VcYfENGJ8>tB1x{HHuLLeoZhrh&m4%f zSE~yRerE^%)z{SelA;l>uaMe{B=Z#c$B(pJFCA*Zvwn`11ZU}S(awXVCA5$Ps;$ZE z?r9W#N9&!Eu$U<*R`4SudTU;_Y_I25UB_nQyv0Ix7(x-5Zft#eo&qZZU3u%xzSEC zwVnVIhS~;zTRLW(idLADSRlgVCT(5;6?{M3ed>|u&g+=8;4E@Iob0tH9acp0#U*U> zw#qPwFSQjBIc;7_KPH^Zwffkv`Namho~|;<#P1a~8N#^K6XfqH7+$NYkM2RG)S65w-hWsubWZIGErldfhsPiyS;l-8q|ChttTdc{&bE8R~=_UM> zLbf&c_}s24mxvQo8G(^THJy?H;jU@l<;jLZbnW$u`0vIqj~^+@hCcX#)s2e31N2Bo zQ=+E6Kpfi9*1DNq zI-6@zG^ycBf>R@UzVPjp-V8avgp zSZp-;t*i4?BZp)sI`?IC(M^?>H`Itjkzc59*A*)9y+0&>(X;mKvB|QXnX3TNvZ3^0 z00c@GJCr0dy?EQW&WXp90WAdxxK*=(vvMboDQ}ijl7w_txH{Ul;?%!e;7&8iP~m#C zepC8FeX10}Q5%TS%!8(8PN8p9YTnghO`(HS?NgL9N`vaE=h7O-1D9y$>U4>f4rmNq z3rmsY#CcdK@0`;0?B`qyRZST5_We5yFKC(qPCyv>vev5%D6~{>W^yh4=Hic(K8DV! zUiq@wt3+{`OaFZ{q$XT7F`IRqFz_Zh`5$bPO~T zN_o1J@yW;~V;*sE$6}>XT&`4a=*@KdMX4k$sg&@_wnDF!{!jBcSfI>s^!YI|RP`DM zA#LYnVVb7HxLJcZn)d=7tN3<`kl8@3ENSAh5FxPa_Ucb@6@Y=I=Wl%7O%*-Gaq(eZ zMH?XjK25wed^r$R+U-DE|D*2()@z0*?{XyL-B(KCjAQfupm^k_3|FQw4%6ep#+QO> zdhW*vQ*5--*&3HN7QyTY6My~z-Ku4`8`4-;&W^=nHIK}wS@#E&mvd!46qDE8-JoCu zFm*TICko=<0FKx?j_UyBsL8cSdsJk!zh$9&x}x^`257d#aFvVkbU{9{dp%F8?byB@ zwCrTe*Wfv)hpagT)^KNUCPU_(((xSyq=Ul9kkwWZ06w> z=N(pES{_)&7)t>@Y7#s+hRR!+qzLqj%6H(mM;;q>8W%4AwOON_1H_l>tg?;Eh^Li! z_i%Gy=sZNHT1KI4Ipf)19Xms@eFV19^F8jXV>(J4z!Qm^n0=fEL9r_$VxnMqeu03x`u@D#w2H0NgP|lgYf|#36E`7aFp)8vBbsyUZ5~a;b7?V z#L{pos$6u*^x7~ruPR%G)WI~|BM$<`4ABqKCIrR?rxr1e=|oMVs3xS zfl|$wB7X_TJCXjiEjJiNnPtBHVw|e>3l1RV_7|2*Kd7rCzF$fDH0nSwDB=_F#8V;{#W{61j+dyl4ND);`;B7`TxL66*d^Q|Am(Sg^~X~ z<@`UU+%Vk#8$4B**O2plh7@hP{=3JAMn${QmX{y zD-i>4U1BL!L=!mp%~Hz)*9LPb_|eU8@ZX7jqRaIwP${RHKBoV)19mzUeD zvDg3Ut+@g!je|xl*fhcOeW&}Zjx8pxo$+rc^3JVp=MmGLAXk)?W7w_%$@Bx{=ZU(9VDZjL+tb7t5_qjZxui5d! z$1t1mhzOP5>TAsIx8u^My*98Uo>Ot%MZyn1w;8iP*laDG_Y%c^9c;f7PQt8nsayu<@WR&%b({d|7Dc6t0vm2{(EKh zN|hMWv`Qz0m*#A|>dl4_Laus^R!VWJpVi;%anlRxEuH^)SKOE|J!Yf~)~t~6_%R>5 zFvhuq;T&xgY|6!X1fsyeuTR>1$n<9U_fn$&`!DX=MsG#r&V@RuuxkyXJnRn=XMZvu zZKaVnmny=L%VEds21qEoQ+%EOU~A`z5OzoliptFac@kMv+=R|?k<+DAE6bl# z8S`4xbbPS4DL(-kqG*%H?d9?(k;^QAr()FJe5m_4!hytL2Ma|Q6J=W|LM}A z$Z=wTe^SZ~4{;I^TH^x(F4njYc5~-hQ%~$O?{%s}1gW{Mf(m6)pvaY=j*I|5 z?Z8FPjD>4*fQ^Z5?A$Z=tEX~8B2^u7@*7@;i0^rOD7%{^AzNF-e{^OSQiC4qy*7u! zDT@RC(l}k)3Tsd%7T!e@KdCO-QVsEoy7w-236LNWJ3ToUF_{liOiDk6YtmSAI3yr) zGb{e`{zX}T+A!s(>yHI$LFX{fp6YD`|0?xXMsie(EN-P{_A5Fv6HlrPujlHf6JWck z>xvQ;^w4N>H6&(|lgShw5Zhyt8n1A)^?*o&9kr4`DyY>>e!I#riZ*k>C>vO*;>ofZ z>iNEX#SEzbXxKq&=@lVvPzN$5x@~Zl!YOx7(rOEk_8EToi-N4#x%XilSW5NHKqZS^ zrhQ~&cSt<~YDH_<82JeO_pT$uB~|rKE_&=Q%#uAC4F@7YY-SlP9LB^P9^}!k#UJg} zBSj3EqHi7KYtwdohG8=2u^4)esW&LzYEgg0Z$8q41@=?N&JTsfkt~n;;kg(u6LFqJ zWZv8RuQR4cE|1(P%QAet&#p!ZMEEGvIDc^#CF>wtJ9cUc2dUUh6kc8u0tm_=*r2JJ z^3$TBp$f=>%=stU4%Qft8>~9VOET^4o~Tspq=+Xd>^@$OQgC8bvw(djVBoD5ph2H2 zsOhAr(GK3V2`y`EE8TOIx=HB2Gxf(Jk0!DSLHr-Zz$Sa1U|T15_Wqzq8ekD}5$fe0 zbNn+2ocf#l$NGHm+yF_Gew{JMO+po3k5|;VeK4}kp|MOtEVXk#{zR4QG&1RIF>FN@ z7>%>=G@=pZ!LaUaRmvbC!oRPqo(_$5g+S;4bklv#I+!s4=Q_YK%=O4>4#D+caYm7Zs<SewBSI-uAS$!1cm`L1 zXXziYzK|F^)E8WJPKlM@)6LA){4kVEgBOa&RU+_8gRJDQs!dhMrHH-U`%lV3NmQZ5!_?wYOUHsMVy|tfe>*!)q`7V50V{^V~ zB6Ld&V@)j<1&cuG_4vFs2CkZ(`(9Eqc)J4)ts^X)7LN9yj3OgsD{}Q2QFb~K|6~c@ zq^n)$eX%cpWfZh$9Xj>-Yg42bAeKs{Lr-R?4|7+%?$3UZ7&=jL)y$!TeY$-xKpxjZ zO}Akm%&H82$-n8DL^Y%gaI0+|1S~{Ho9Meq$v;}thh6YVMOUq(!Xs?WMbf?>cE%XS z5bMg)6&8Q(zVHUUZ-;*H*@}jn;Ix}W&uG(dvjHkcvlV^PXSj(5s(MnC2wcw8&k07E3=|K&l>L(qg zY)Bx7#`?ngIs`y$46mpaST(Ty>HqG?0d^zh<( zjr2?fLrUEB5a7q5W~C~nq$UlhIH(`KRao0xq#7}zG44Un9%U=$Yr*!lt%_tDz3u{w zO@wh&N^@GYvt4Ao+Kz*l^D4h!M*(cx@nV+9xTBV zAG@MU^1rQG7F%PZpUWbsMYF`xXivVLy&-m9f%E^Ww_kqR-1y))+ZSN9{dp(L#Tgb< z=Lp;5F~0JVVOGQwGqw&DOm8%Ni1O9a$#lRU$kd_U8+Bjl3MZ1kW+Bt$M(FwM@J#GC{3YGh{yc(7* zE{_8036JcRAYEhLJrapU7C$V7e1H3}>}yv!?pzwg%OGXPa`5M7t#IJOXKN`;7^`QE z;o4hxg=FW!?`!3U(!JeUt`_!ge?zk1z%qEA@t8C+DDO>jExY*=nk55ep#@ zVkh=*a*qRyYTQ~cF7NOrJBA`AAgq5 zy;v#kz7(-K6k<$+qRg=0v}1JH8ODODMV#5)+<3a0yhL!--rlAxxHQRU;vFv91ubl> z9b}MvIXTi>PbX+}UJfQ#c>edU+|42ZO8tD4N+Sk{b&8LnN+XB#_K}2A?)p+ag`2S?vW_vEdFabkXeN^?7OcQ$c(NRmj{u*Tm~DUDJa&a} zMQmy)pg{oQ?pw?cMn#Y4gGe%_MU@a38bYSdHw+x!%FH{m?{;420&RrI$duvo5^ULS z6<1h2>k)RVex?OjxEp9pB=Q-GjZb>o#4jyQ4J0h6WYX8}d+%c?gdE;}m8^PB81S+b zEKYp#P%6BdyzfOxYVpP_&^cqd;cqIzCPG|!jL7}wb766U1e;Iy5~j+ur_sgA=t{G> zdqX^*j{ng$prNn8CAF#$LV)n~9e(iy8=vzc=s!d#5PoxZRSR2TONmrXNpA|}H3+vU z04BY~Z;&tnLPeK!yTX+==;3y$@fC1xUw)V$_=~*8C5y}dVNN}vh9D!XE>9{yLv%?K zkMEMT2)9Z*S}fN=A$+)fBdx|-gzj#YVlaFDPF9(Wr*w&2zmVRGE?PYg#y7X89%AT8 zx*SK=mwg8{mu)^eFKstC+mMQxJrkH2^w&~>&^=xZ75e6mekO}!9uKbkC9zq5JH^7yAjYa@n7sc}q}Ewb0m((xKskihL4fBky@M^&L*mE|;-DSB)@Q zIr!zZ(nd%K(f;qra|X|2S9U%oxIo(IVQmk-TsOkw?5&%P1@oD`DRX2GbH`wQqmQ@M zb3-s?I5#rFQF3z&Yx6M{!uB^j83$WgOG5Eu+QZ)`O|F7D3b8|(+7!8`Mws-Y=XZaR z@kKqF_ke#gp4&4A5nvW_US0R#MoNiAWTxDPX5^KIt%@zc2-M?EHJ&!S8(OA2Re9&u z5h>5C4wLVtYR`Sknn^Ot1*qi@x}@vD%ils3afC^~`nae|liWqK;rX6Qx%`}H8_b<1 zdQ&d!L(TAK4dUaQGNJ}{12~*z@w^xns5-u@@4!ipO)mUe9DIXIPaLWTNv0X7MCNcF z2$>S67TH9Pk1Wpa{@@D@beuiR7%eer?A%jRdJWBku5`-3%9WN6f2(>zxbh%=nbV@1 z2baHKQqrP1ck>cN2r?S1JB&rgVY~&9u2M@sd*ga?#~)^Tc~iM6+eZhY!=`x$=2~*w zxNb(Pv-aFMJ8Nc=wt!jE_qk%^J~1`BZB<~rjY`@mzNhh-x^|a)+p)3BGm~!D=bcpm z@eZOaLd?eJxhY?;&oN|Oa4qjbvvIc55`ds8Wf2$QV%nq}90hYSpuPM%()f9msg0m2 z^cg$&7b0k7K{DzT+f_s;Ip%&8=+x!&Tx@7W^?hInWO5w%xfV`1c=t(=ekksVg%!y1 zg3rN#H9|(ALUuz!kv98s+2q7yoUASINUsREj1VC{x6SUQb?4QFFwT`{Y}OaZl#vTG zz*VAA@eF``pZburR7iU+TAlX~6RHz;BqK+uJeLp7_N-}?b2Nrik^|za|6$TEr1BC= zJ=wk+;oa>!yC}xx-2d#yCf~SPK+iuJ4Kx3f_q|d33yNsUVg5hN-2b*>|0}R@v9kVm z$;$eF$Tt>l7?%I&H&zxHR+j%ivM|B0F#RWTz_4)q-};U9f1Zx8{=eRiIP6Mg>|N7x z2?3`=s4V#jGS#|hVmm2%&b?@{UxWu+$6%*yTBK)EYJhyn+l^{MIDw@8s4Bep{lgr04e1c5^)rl4J`n8t&4oe#!Jyc8Ponw<%sJle={m5z z$9G}iYx!Ba{G+vAuld%4$M=2wt)z)qpgr2VGIs%Qx}lAu|_{bA)499{myCk^b1x^AAA-UZ zI-vr0MeO4(edED+WQNbiSs@E^-L)lv*W?^(oP?;$iL)JDTbJYYuN}q!LaP?Ju~mL3 zygBndNCcuzNk3mmIjJLsruRSIJvO%}=jdJkMfqbtHZOHfcE~ZkzBIt} z!t$1^cydeTygz?J&+Eke^=maX?XB~~8PnM5$rvu-zqMM)d#wPLY>Y~ZVo#qxY_-#> z-nyh*>ci^~J=Bi4^0^hBTDjZ> z;LF50qtLYwdx9>(5;QQVz2*r=?syStZxi$TzP`P=a;9(Yl;sQ0)`a#8> zc}bL2+N)4@0>BSe8x3)?(w3D+#DZr}``WWa zWD)kyA*cf*mEsmC=O)*TIr}veObun>Pq2YlI>eJILR3%-&cA>cz5Yf0hQ|1DT{Snr zfxMlFcJwtuX4S~if;o(D=`E?K?an)S@&f(%l9}wZZ*xI9X}SA1);cp*72^-|>?2VC z!}u=Y;^~DiQwe2t_yn<xxtiZNn2yG|H%T4rBl&liu3()Kl!x z1IG_lJB>Yyb*Xlb_bL(vN7#zslw5jUMu^8I1u%9)|ua}i7KUfNMh#5+f6UplgqXP z%qW1AxoNiLp1kr2o01PMn<8&aYYFs_;2yh3XcG}aBr?v05KS2_dT=P*6(DpKXBofy z=K|$s>5SlX3X8$jzLzlS&cu6H(jF4~*gZ|v3JtCsgb!TD6HouG<)B1GAQY(cZMY59 zGC+7;(ugSm@#pFJYtX(AR1hF;Bug#{Fnq9lIpW*ylh=W+XhooltDiVua4)ih%V-x4jmzYc#+dd`lc2?vZP_eVB==#@8xr&B;dN^vaE`K-CJs7 zJWGq91c)tlls_s&rQEkbTFJm3R~Eq1SXOkO)R{?@zemJ%s!se9m^T8xX7+gnT(&hzJ`zWQzLQ1@ z8_)G1SJ1yfDmk!p%bz#drY|&CDa@~PZ*w1{2oub-rBIO!1B;9{UtS$bqJ4icfZ9$3 zA#^U@b{Dw|8eU|;B@mq!yDxhKl4|hyd6}^^I*f5w7(An*d^sjIHC=$S^gxt`k?MuE z08gQ0OjS*zUkq%SAL$tY$h;T0OH&~{@N+*#itHeu%n*;ToP|{Ecn?)83bcad)Ox=6 z`g_0nFTU@jg78m*vCL#@HBP!^8E}zN9ydJ|3upb?(llvA=0ueNES)0d&7$(I1CHW~ zRd(y1U;$-z%n&Ryt3A#tA&06f5k2UJcQ3FDqttQui*ZCuGb1qjq=R%BRzV#8c=sQA6c~h45igDao6cfS^M9W5WnwnGeb)bkc-xTO{tZuKR)II&2Zg7U=S;$ZG31IN1w+}JHZS%e|$7kGR7z~qdCD*aJ>R}L+kwHb)smMAetsBRV zesz7dVbKpw_IDBnyletUvdV>?=?CG}OxC?u_brp1G4#$aQ7A~$$t~F0TwPG;B_F(P z5yRp_sfY7ir`-!jGIs?=DG3j#?lXlCGKU?8Ar|~`^O)PZq$9^zn5a8F3u40-UD@VGG7!L_D&d{T;O zO@2yAFH*Ja(-`aE&38|-kO*fp<*?Bq}}SGH2wHR$m`Yc{8DTtq=xW3yI9)~h;gelcsF zJvpRs)o#{<14&8^_z5N?9cbi%T7=;Pg=U-%ODT;mlg;w>PUs2_^;u*?&TjRbICS?B zblSTy-Ip^@u?rJs1P0Ll+MGGLm>8!f;MbaIH0jkn8Emj}X*fo>gQ${MVrrK33{W8< zHHep;JoHC)E^gxcW0q11a}?-yw&T7GXhDl$l9lh7E6lowplwZZ{5I$xmG0B)2!WR` z`l!R6hM$oH%jGhd!%ATx-A;SAqzv|ww`&>-KtVE~ywa@66oRU4b(!ww43?!sAVZ!% z&M<%YqH}s$ozXwINwq@gFbkZTW$ZH21O5}*L))%e_rwcBrk$faC+vC!ska1~yxxSy zfOMIk>3+bo6}B0lyD_y6w*%SzkkT!OxQHC6UL;pKJdn~#Qe;W4ACP{%isl48HoXpsVy8xTL6IdNWa!ivY z&Xv9RiDl`x5VVLWF%OkM8fop1zY|~;w{SARcC3NL=eTUF)%Z0=1Q0^Sar}k2w+PZ_ zd8HG!iSXg^lwxc*M{m6`YmIkY_QaWVi0~J#2)*B)f{tjFmBTbb%5?g2qxR+8B*d5E6OGuLbF<-B&h{xfvy^w>X%r!LC%P+Lq=m(!6*OGq z6Kv~A$BtPMPLa<5xZt3eSbL#L^TywV>cEbbL0qz#nDL=?lvFbL^G;|hK~!`WeQfZI ztxNy+?i?I$OJeZZfM64W5Z^Xe$CIjd+#x8WJRb4_kV-v2pL0_kguLonmN?cpf87va zbHYs?I(d8^0+SKDOuG-$cz5T@m#uY9&Gt3?FUH1cyD$m$%Rc7#V-8EgddDj02cm_i z>2P~s>dCDPRHh1h&*rVszVQAJofrX$mHjA*r}yeKi&MVzB<9{;#eAx1!UN$2 zg${j#2H*zry8zx}!@!Y1vXbYn>`Lw*cQLl()9|ya(awRHxy-^-lA{}F z(eQrT@xHCTENd`+hT%$9-;|}WL$NH|P`~{UG3UQVC#iPWBA;mD18krQKUQa%-Vn*2 z%al}y9{oRz9zBT~-^Jt-()lR|5WNVPN=?9{5rM zeQQ6IqE&m^YYLng{y%ob9$Q!+&G5=btL0v=pCpRuGtGkrKZ0JYv>*S&@UZ^(B^4VR z3)6p>Y)t=$;bG;1VdeUd;bDVeW&2O$hGFIYzqJk<>;KR?Y;6B8S|?s-CxuiJ*}t%{ ziio2LFK*j^a0nJFY6v+fo?nmPt$eKpo87^E#vl836WFlH59W7rYP#+!)*=%=vfs9v zhL)C*Qqf}S9prRH@X6AB;Op=X5W|HJ8hywh2zkdJTwaa$-S?+@czyC&kEp+N*xi-wU3?DcZnqa)RmxNk_g1yt2RS^#P^Sp#qoafQ+N$2+GIOU&JGJt@ zsaWUgS6eCiT98vYQn6;KEoh1f#Uj%RUsK5RcQ+9vJ}w>moO)N`K2}MfTss!*0npE^ z>!pXtIma03+L_A)?8ZK2Qzc5x9hsp!+9XmnI5cFR8=M?@WD$s8lC-`sRbP_8aaMT-}6%0ESYwDalQ&G!B zeB{ha8BSC8MQor>9*>pO(A#z^xRo|^Of?a0sutW;M;7)Zv_NKETFB@*TZ}%oSlGj* zxodpPe9^Fh7_x4W$3rX_GhKq#>clHB%F98AR3Zqk4Kzt%5J^o^l%lmYbN6`X8eoHY z$61(b-8R6m1M|tkg;Dz;CYlDq?nX@I>vx&AoD?*0y$LYD7T&y$22)l9T&) zF0JfN;MndNX~FGxvK*!%C)(Ld-COAh`(sDOarS%S*3id_jrg2$M6-Qlolk?_w^v+5 z&9KwDKT2GoiTZ*Dc7Tr_LiwiGPrJNy62c!%Dfu(2_+%)Lr# zX?c%X?d)dF+E?X3T{PrkvHymYJNOw$>6sW=2N40OWUuh}slkB?u)kUG)A{X2NWL9v zM=g4s4WUZFJUVc0jnl3h0?o-*D`S zkW5#{{YOvu64aY4bm!Et50P*%oCKfyLo#=&R#d2!`ghqmI=)F_LEbf^tDoxzo7j26<+! z{9LMKBf&y!@LvM4!s(^p)X}EHg?B9v;r)muMe4sd2nezJZf$&CW(xk`CKx5@x>czdDqjh4JwBI&Q)A zze*DAa?$Kf{@8&AeHAEz>9#qi787!$d7sE)DECMh5ADd?thCH#Qy&W)9g2rx(uOmB z1{`Y#xnOZEEE`TKBm`yNI;}M}wbu=~-}=kf_KdgTm920DHLfoXL98Z>6!k2@aToGJ zgH~d*%RkoHIUrxkbSWBFDUj3cyO^b4O@Cm9x@(#D{*yB17#L!%5$lWgR8d8$^CW8v z?6zlxqIS_4hW-};YC3)uuaMO6(kr{c$_sBX^<5q9HWe`{muEdkXt`BbFOFON^#~e* zX(B-L2WW8rhTKrJoDsqOD_s9UnR?Bcwv^|ooNlz@{&KXlx3f@m?2huAGOqJVB+2Jl z^&z&f|KoMxUwObk*H?!+$)Z2Gf_^`Hql|00j{pAgLR@;E4|cd>J;69Dq=H-sf|i~h z$Vdm1X&VdYu=?IzJK(H#mqOT*31$(|q>HjQfPSQCS9%X|jR?PF&qls-&1fFZi3-cSD4wcC_=-e@pCrGaI%K5C*&Xp zmoNtjbGC(Gq<9>-Th_}d!usmg4o4lss^ITsuG0e~2|yY2P7g8OH}%U>0-j$z4Szsq zV;a6T+4&|(?%Z_YRdKBS`Vhgno#ytX>|bD8(Quj{0h}uUq;DEJ2S8$SWk6tEbX#^V zz@Q07IAvh)c0N;LCrt-jp!k6=D9`lkdVQ8q7H8M#0*j4sXn^gJ;QSMUkZKObE5oLn zV8W6HcKNen#>E2Z zcj)`U2P9JJT_=7!navg}!V6tQJg-$Ee{=?PCrj_Y>(9y9 z77ionJFtqnH#MRip%F+SydzS0FA`d3=_lj3P2-2D#32)m^&OSo7+40rqi)!zSXrp( z_LCitC?wn$6m{y}5S{$mYT?`c-KjFDJ)IQ7sw?Z9+XT{R{M>L*bXgOD0MfxS{VE{Cx-6pKf$KcsV3+Q(GRbqR0GFn;3iC92BmSXI^2 zt7{`rN_W0Hu;rH>7T^~>T4@2urKK6XU5DgvY|{iQS;5rE3uJKDqB1B$~Kc6`WnG2$P;%7X~rY%7QSn_aQW>pp z-|v|FbztzZv4~X2p{#T|0w%l`pJqaca}oqS8a@}{AK}JbEyg6QE;TegW8f1wHzl6L z+asEPFa(#0&P%>r?JKBT6&J{5WUUEAfdHT_DM)~{T*-AoR{jDlkV^v%f6gun(nX7m$1=xT9@tdUS8jaRDDl%!4JCO;d~)td&9n={X}u&>BBqIlhu29^ayd#+qS zj=Dyyh;NR@`aNy#DYNpIeTw8I#S|-}VurK=Wn;=NtC^HtsuqPL&LaykADC7fRYkMe zg&)mYH>(Htrd^p0eU=Pqqgi})6ggUOYshSJh0260^%~Z77c7qb=!`kba5ya~N&AIv zyPO*xz4I5u(LO|5<-mCsS&lIAv2!6trN33cJgd=)M*^QX-*xlu=qaWh_okMl2Brj9g5s&{RwHJx{PMjlX*4W6-v z?$k~PCXkExLlUc`=XlX{3L_E+_-ZNpFrdrw@`NCJ1O@PxDeyflL^defQK|nUO0hm4 zid1II!R+zz_35h&TO}6EtQb4rd1)e$8{&$I7NFxF`Bo3Amf1P%E@f3GPk}>cpfJ~N zkf*8?o~;qvRxiM|K&3H8I)%BJ_xlSoOAK0IQ$O+qpW)$JU(fwAWjpd<78YYOMW)R7gdtNdm=UPrwI!9g8b#n&wgw7+(Y)#-sn~a#Tj1@Vm=>b?nA2oW2-kWY(@3Q+R?S9Bo@Z>o`3NF< zcU-T=ufSmg{}|<|lw~x^kFQtw3wn3|j!%3(9TTYkVDkT>=Kq3o4i?7$-sJe715vC{ zEdNY8v9Lq2u>Z4UgkoX*XUPV|^8dLmSQ-BV&smxNZ?22=xXm$C-`hF@9AIK#q;M0* zX9D+c#mj*TEOQQvH)pKyS_i+1mS}yD#HM@V^e}I`gh3a0_A1(# ztMG2@5#%_Rkcam!A(+iqvMTs~LZ!q47o3nqF;Uetat$9q{_-@&q8r{tJ? zP`f0tnbvmA^B}!&4o}^-C(ndV zM-q_LPHr`mfQCyK=B4_|5kq2`Mz^&SY*6s{*--_m64*TuELn)dc-!$EIU;t&!nad; z-nXRzgz-rvpYU6=q&DlKZ7pt4#TCTEM z3WgMH^Yg*1D(~1^CI`vp=Aoap|18G{73+;DIg} zd2$KeaF}f_c>Pi{X29WrK0v_vEF>uH1?8K1(Zpz*NvwSOTCinT=a0tT^3mTsF9rj= z7*TMNi;EMh@m}7aK=9E1XMMM9UFQ{k-5krzfJA_R;$6K{=6WKx7O2g;&|2otO2P|Q zhMAHfcJ*T*y_8H;5Hg8?-f9|(FgJo3IPo4{93ExtZy9XhtQOZ#v_Sa+X|n8IsyGiP za8hc}krn~gvSwR}xkC7R{Ww0Z>W=N1Wlb)47N|KN5UwX{LC;l(h-s7Hy8MnDKqeHK zlct{@fP7gh3oH+oTrq|jdn%X28tBME^Z^92gl*F3qu%H)xIlc^3Bc(V8~qRQj#dLk^u?$_j4vi7P%VT9F!&WEI=<| zU`);ICmwZ=nF1LnV_Q|8;W|&kOpU1(k_( ziUN{KM~+g8Hfl>4SvzU;Q6Dtt2?mNUsUxuD_K zw>bbv^FebFY?vItP+kXDZFXcK))HjSA!aTh#alq&kQl_t@g4&&8_I(!DK~DG+&I-3 z;ph!A6q2BQ;j$mJHf=9>J z1|^MsSr!wFsv2o_MM6S^Mq_}j#bikFUH=`nWN{COIuV)0GTdzm_z8*95RvQOb)97m zq(U~Q+Y}Y-rnE*|^SV`7?pG4~%h$Jf30nGr5E;pO;yO2al>iugcMBj2#lK*ZU5U6C zKoPl@n*kbu8zI26t{aQ7OBf&n2XxXRo||J%8!6iiBLR?39WFo>Uib304=Batn3M}f zCWM+*O&U6l94r@fT9rN4HrD602?vBL=p$=bQPMAEcI0zH&x1674e=DZKU(x4;_SH0 z3sf1rvEXU$Qjc+5YXq0pK5m~(4umE4fN|1eg^m|?mp3?$iVpk^A=_evR!Foqk|H89 zQR%2ndttSDjEhqS#^-`$A=qGLbk|E2Db$EfX{^UaYfIW0TE)K(shdM85Q1Gc982bJSzAY0m|0jpMcUfY%DLTho8xUTE zw@?%_SWoqylQJlS@x+bwg*auO+1VWQemI^)}Sbz&M9l%byGRqyqAst?o9w_WS4UYUX z6C;B*LXA>d_QS|XgsoQz;AlY9($fNcP1>3oT^MSx`C{LkSP(1=)k%R;^xKxQmAr5`vK5gghB#QSZ+MG0)c%2Xl3CItEsp_1s^0ORGWVB|iq!ky7S z+~Yo(K#?um!xWD84ID_6l=%zUH=MTDnIw#oxfuA^X;;eqU@O$v(oz5wX;hj#nX8mF zY)xRD!*NvZR?)dIRJ!NXE;A_01_Y31rgUu7ivjR_N)UD}_Et=j0}+6VL5m6>%$G-S zP~kw#!w7h7Q&_a{+p}6=>Nk6V0qobLw40}Bh*5j<{w6>a2aNsNAZ^q@*mSxT42+L( zyfHAg89ZJ?OZQ?5p=>-L?{lJ&qe(vnW~x0fJ!4%ho|CRkj98i*mIg&`Pma-&akJ60 ztJN1!?oitRK$JI4#QK8j)^RLuUE>T(MlY5mVjtB#8=%}pJR#$+no@0j@X(D@4HP&) zi~jX!7?#SGJOaC**KB~0#yfF7rX1^OW+8wzBivFz7!VIzNg>e~(`OmpmiOmG^#tw} z#zf#eOsjVfnSP}192vMl_LKZ72SXffX}FT$4m{j`==Bc%)0&`^ny9@nJ?xMuJ;+0_ z1mP9J;W3C0P`y{|y>l7%wj$zjeV6qn(xq`lhiz=HXa84`-8zq^f}sNkeKxE`IlN4h zfiDEz>N}j?Bgoemq+WMF16X43W znhaH*jk!zl;FxTXBvc^`S%&3=XS$#VF)6Lh6o4{_K1ocAy{J7nv(w2vfK@v_3>z4x zfH4!OPTU$nD2WsrAT*h-hh`vM^WfdF`z^oS@7>Q(8?>~T0%A-<+6Sb&Ej@}ySp4m; zA7ik63A0EFjx+6c+?af~rJz1$kRO`m*Stxr`|hu&G%DqYH-P8kclacqG6rpWkFO~g zgVl^LsItJsCfKHFJVHmi=B?Kjpk}KRV;_&y0Tr;_r%{K#K+_xh6T0CgQ97jByHRAqL9OPJ zd4e~Ceb8gk)gA%Mw~euWkQJC(GcA`HmQCRD8?26nSJ_wRl22v5Gt*+It?H?~I4*M? zfkpzt@O!_KN#YoYW?{k&!ibY;XZf%U1hezWS58Tw1lEojN4(1Yy`vRqO_ZFT1W=tm zi_cvQZvZ5Z7pgDJUKa@EMyubHfjhKIrk|f0hL}`Q*Qr^G`1J8&zQ7kWy zTMcZDSsY>&s34eg-CaS8a)==+(hDs*FC_(9eQdvB^;cG^H4^B7m%;S%frUj8&9xk| z0i+C4a_ZFGJ?|sydS+}fozFolLo`?{mUUItf%k2Y0)mM)&861{Zq&wd^6BRGp~f4~ zQD+sPK~;xf823YkGPC*$p2{7JO0FR-oymTsg#<_&tGz5;MfW};=VCd<>2G$=q;pU| z+iTBV*YUpzQZ@1@N=`-}O~`Y;CJt8Zlm!h_X}MvtxA=X2@4t8Vh=*!_EwBO`mXmE) zIq(&SYOZHf0$4)Ss`;N@^5!oj?+g(%)EY0I#MZ*9=xY7&@;exwbr#LBJJ`h&#(Ho9 zAl@nGyvQPC4u6u`LGS-mdA0mbSwL!7%eR)T9Rm9)dSe%C_6v?!31g*S_YMlF!OMFCO&#nRa9aP`FXMd1BQT`q zZLsaSV_1(yfNZD!yMBydpi=h7T+>NAsYu^q%Ms z<{=atA9uOoL=!QA75#h&XEi2p+TknOH~Haq`Q`C=IQQAc6W6u z1w!{j()2}brE-~E3lL^hz|UIW<>d4&dtdY%kF)$-*XWXxMH+e z#_F5W)sV$cCD#(He?&O{-~>Cpz6WuaecWrA+as>F8uj7<#m%r}MhSG+$t5~=@z*!s zM#i?rmIjmB5;OJFIQ!>WmqY#+yR)@%eIvvNpVaWbj_sr-j7jo-b7=bJ=8wp>KAq}n zgmP7xpAS+EnyQa^OusCsAk$1QyOXOpY-YAcLrgg$58ra zYdbgI3OSiI&HSZzna`H(KO>cSG9E(&36^SK`r12IKT0E!+fJ)Z4GJd>-hW@DGs8R) z*3CPOZN`W+@!VGBgTCcW&$s#wiM%tSXhRh5(ICZ z%C8!8%V=qxiL>b{3Ngf*SP7+$sYK;30V`#NFy%D_y5GvY{mAW#m(b*jFRv|NvTWuW zCYUgdoK%1Y$w-3-Dn>^AAa6fADHNZ@1AvZ_QXnkUNrc|xu|czKv{Y85zKL8K{h_2| z4;TKalI*U0icIE@u^JrG)2WO%J0wX&Y;E#{8>2%#UO(p42>&h*sdT9lYceK7e&su6 zHjM2y9%9ldyZVz*-dZ)QeiA84_u>fn1yVS>o{j(WvAC(PZ!Z)*X4VmIg2znK0cDh# zdfy3U0jMgdoe%MqI%ids;m=o9+gU(UD;{P?2rRFXk6&{tIVL}*U<5;$Wn0`?!OPdO z&6~-Xctm2_C{WWBD}Gq)QSc$W3~$c54sW6VeOmL1D8V6Z_V?%dx~r?p|Et@TU)IE^ zEh6E<;@pp1cxdJQG zw1`F|VGE7{59<)*v^Th{8M0U=`h&~MPm-qDt@QCKxjaEr?E{YBFyqo*M8}Z^c@pDg z(M203UY{aN*SF-%E*Oe9bLe?S={DR?q(`Rm-GI{rd5>YLo{*oDeAorkclexYnwyZW;hAyL6iuUaozULA1yU$wV$9HgH9mWG;L&t%2XFh5 zGiWk?)|bCv57I;eVQs^e?w3*sDN0C_Qha z;tCOlMW#;X0UjSs*A?worYTFaT~nF(Htr_n3#vzOWK((B&~AJR%| z1)Jo3gO*aC8i?kt7bi>;?fN0cF5voytmO>D2vW5z!ku13)(aF{-Pp9-D!avtVhmi@ z%?r!)!RsPgBE`aNU8pM3fbnoNelb7|a?8J&iU`*>=$r!5mC(jVDV z)^+C8G;$^fSPykxMO9yyo;HUuRVxJfZ`Y*@AC%FCzC96>%dOqrDzPVZkiuG6UF2QN zQz;Y1w#?}_80Ri2#25?JolUY(H00Al`}%@Kc(9*&AZ00i`puvyNgxsZ8k=@U<{Kao z`aHw*4WPOiw&f_|v?C^&BGJFyC)o)!^~rV>ke;AcopbI*yivO!!26C^-o@~^dI6{? z`fsWWbM-TgR>2Oct!wr|`Ubsv?II)(9G+PwPH>J2Pbfx_v+0d{zQA{$*Rb~+%)L!N8 zh;m=5=vAu4O66iyQG`*%tBd;7b2X@pY`!nd9f5)k5{)Ef_BEQ984q0v2>Sk_NT8+O zEus-V=Srs8?OzjN>SZ^AiqjbC+2wp5MGP)_$~hncgZc6UwYmBM!64s$t3se1oF~aV zdE+hW>hbrqHbvOK2Woq64HQB}%@c(S6NH+Q<1^tVNp2G?b-GI4OW0}A_`RowlUH&vVd==>hyc_=`7tlAQ)dc@G6h5lmC1kU zC*l^KS3Z963Ii;96cNdEj?#P2GAwbrGr|O)dEd+5KESHSxbrU=#py@{_G6%o45$RK z7PPEO{t@_A!DXL_RLt#B!KU$tBehR?`S?z!8#Ut1M^0>LUheR|l*YTPd?B_&U0X%6J6~`~jmSaJ_a_##>9!$~ujE@2E#jco?&hvy0W{)AaU` zA!GAmE?DumUpM9g?wd2;%1<2i2rGH!eTsy+8M;qLElVrCO|Ze(R~4f>_$*+);@827Q4t zk3P^L&YWGKH}XX3i>KE|Fa&j$D7zW-+35bp3xH5&^&EbK(u&+1=^1uex3A|q#BU+F zb4^SM`1*qjCL+j!e3K$9(Hg<;=!VYp6>>0@jz(sEm>`kqetO`p?QJb{7O6R+pSpO2Yt`PnEe z>iX@VZIcCzTrHg(sq~8q3V#Kz(vIJF@BsZ}MpQdjfwr7?hEORVmS4YHz98Ar*Fa3U z^_{>=G@&LdK3p?{tV!K);ARqq>vW?~LZ5FE3W;z2R_CO!x znG2R>t-k|}`A;Astk?HKZ3jn!P8xz>9I$(zng)xOd67-m@ildqX+u`$IC0)GL^Ur* ztPoFgaPD{Gl8*HonzqT+?}tp=OBe(uUL9LB#c}122mi}zE#qix0XLL?py#P6mq-`e zMJMB@)xF>ANjSUx^Jn@WAaee)_g+nbm3F%J&z0}u5Es|R&!_8#^)$yIKgG1B_Vg0h zqap@L77-5)pa%9~1K(Hl5l)esvOcD0p6~S=20nVaUSDUGk^Mlrvnku8*gW{AO~WwF zgf(c0)8QmkZ25cWqphBqMs#jG1xH4_QwlsPFP5P2{-ANQziyF@Pef zMw_n93F(9G;36Eh*7EIbRS?NkJ1%-wC@x9+0K1JTlM%2#EL$=1zK6BPE9gsNb%4W7 z1tWJtkE7(&lG`91Lo&uELTZK=%+55J>z@-Aco&H0_v;Et^%f#_7 zG5+sOmj5B**_fc%{u$P0V}xS+r)|i}4#oOUGx1;IpN;u{i+DEn{}k~Y{}&Noqxl=R z)r$D@n-?Ss>j8UpPa;+HhZ^dS9M<1}WR4DNB?4>|E!tJ3n$(q~mGn#IBhaL>YjL>o z)MoQy&>#YaZldtV$L#kJKzPl9-zNXG@Tyn!TTKf;Xa5xNmxrH=6YtD3{hL>H7d8_j zWF8q!tkJ6)$t0cOl#SIyFXljxVLF;l%;slp*`p z2EDG~hhu#Fu*UA?zsfPLt6G^i_m?2-K?3!c4Et);2pt_?wpAK!=Efy!g_o$@ZllV| zPt|tf%jm}%)|!Smj~udR^VVnJB~mrns1Je-J)G$e6f-?`$49uTF=cwN9_1M8lSbuh z4YyCZJbO${FMA#$K$o~PE5Y+sYb&z6e2oppB`r$l@EJMB-pP5#&T;w0$^^iq~su*RIvAm3F(0y1Y2q2a4Am zoFw6{9t&K5#jT%98E#HAnIIJab3%o77e*8@v!g;E`&?8#7eVya7Xm0|Mi=sKqN5TAX@Ka!Qw8><(rmU6Bdk#0b)LI zV4xQ!JXBCtNwLCK&=KL0jO(}_;)H~jbvVofn%jD%i9)+K9$GGC?#i<6RHOJ$u1=Cf zC`dIpXga(uTR%EX0cZbK;p@>a5XE?;aT|w>#VlNcTg%{?H?{xy0AQ)QXbh6;>ZB1{ z5;2VuGvkpzR$2)jS6TAlNp4ZPSmVJ;o>1PcLQ`bu6++Nrjj?L;9H^KQ#(Nu_6P1z+ zb_>B9u_UZ6h=3PYT@eLd2cwPa!2(xP3mt)7F80fh;*m?8AYq&cu#JA$p4%fW79e4w z!U}utR|{3M?U;Mn(xQN^&lUpk*069fO#H zk##{`^b>7^u-N7YgXCP^wrZLhY{h+hEQ;3DDb5N@rODb*?10ZZ98tHMO4$1g#35~q(>8sVRGh06b(zZkGNYJG1BB;itP}>5%{Kv zMYIO;qTm(W@IZU^Rcto~Jn{Q{vu=0m_wv!c@8`pQ*QcSLQ#@$|4_UjwrYGE66I31T zi7y9@Yi(&ly4YtvC!yj`&k<4LB+mOWllYkZv89R$o@s`_E{bz?S$H6~V+zOK5_Yw{q>|joc9wUs4wrjz|ILaVHDA5!Z z1sNNj(Ky|zcn*!s0izfb z=>_>AqnuLwRT;grG|p{`%^{rBY+tDGgC>^??^x&{myE6r_?I$XeY6|P}JIsoX!;K9UPxr=cKM$t&^Xr)47O4!g$KMkzoyq-d@JSrdb zpXYZo=MS5viZ%J{={M$08^5iLz{Bv>w(RMAHhQ*f^Q#U<@~5>XDr#20mFu}6f24g| zgzb_0S)0{V@?2}O8g^<&YT^#h`aHe=fy&Y4Y}w zLy@8=BV0bEzd(S!jVvY~;^S?T$ZPKc(PfRpi6EzMH=9E7k=0vO=KJ{D&8Sa7xvU>Rtp|t!rtsdLJg{d(YueJ*Wk3y+{Dp)Q z9pqttzQifY%Mf~x?hqCDfi0pvX7-(DdaEH%h^8V6)1&L$<1_xkUx7a|p3>o3KQrje zy+fqD%A7DFYoIx+x0M*ttNzZos3xzf#aZcaOU>*ouCf$X(rSneRQtCX?_SG!1>oVq zZ`M{wuPj}2Gp`lXHl@4kS8JZ4L%7buSx^Vev=(;;<=N3KF-NK0CvpgYhjFZA&Gv_D zmuLkUGfZm8fR(G{bv)X`+XY1Nvfsudymp1{4!YEWp`f{#s4sE>k&!N>-soYDfiY6x z#QZ{yVUFFJb@EtZbQ*jj9EguQwTXoH%MULo1q^yAw>L~Na!JzF=a#4sRbWDwFS%W_ zYK@$4C}*F=&{So)F=PT(_{?JvElMGGjOD~ahtQPK7l_?d(>I_6>qQi?c6~HXm*-hF+uS)!}dv$1)pNx z@~IX`N|00l{k~v^82NBxG;Fc2}%#Nh%F6chAgTNK2AxWO~EUVxh0X~BVfL$)MYCt{CH^`wC zBHY)a6pbo}4f!lHj{l4uqGiYGkwrM1F^jc!_C|Cx-jwOFuFcL0t^-p>Vg%WXQmD%t z#Qri6+J7EcbaQ=RmEvT%)hK-t*E36_8Kk^Rqt7ZcXd(k*(y0FNamxhcRG4>Z&%upe ze06q5I!J<%N-Tn@7Vgpi7;!HLIaG}LvI}*XLT-@e4TC`=%Pzt$IrL2Qz zJJwg@FKyjg>9L5JF{qB(nqxot^1durjnfswLEPPVG|fQ@h*MJZx96!2YKKXSKl&Fv zR*`MjOFKxbQ>0Io06E3LHwYM`&`-Yz=2UQfx|=cpI7i7mvLOYjtU#sc;?U|XV6q`M~{QR zT+`&!s0WesyISCzOzB}j8)&ppYHY*HJ4b3$V6HuG%uZNhXIl}sajYgQoH3`s!g4bc zu6{rdLt@COX(_)&*r3^+SSN}##Pjf}dBqN_^rt_3$rlSAEzAB#E+-kwUVLiYc z-%OLu*f{!XJ%B<7+*L2Gk((>SLrVh7MS{ zJ9qGNz<$Th|CniS5^8gC*C4ohR#kJID7kd1ws#%B7T@jOuDh%6>VBik;}hll zCuscJmB`G%$ob!S?o9s^G&rHy{^<*_GeWWd0~&0sP;CDg7}*)1*ctveXt1;X=i6dz z|2NS1cemgS92gInyQf?K!HiOgpg+-P{V$|J|DIDjcQYr+Fj>onPw)fa!s>~ND*O1p zR2&LO7_Dd6qHel!nH(zbHFf+?gMV6C^eTE?>TG@o|3tEvldt2mG1db4Y8(1PbzKn6 zoL}Vvh0ij2x+Gqc&O=Ov{tFM29_p(|gerI+m zSH-6nPvyNvw)FCLWn(s&vTmhOxvc5ZcZ1dWcvm3@CXZ^&#au-z_VN;5VMAE#= zbQhR9Zw8{<>a_;!w?gbi&k7C`{k&jON0qWZ-LFG}hZR2`wBdByFjw>=PddF@+p@;;YSucv@2RQ{NoWIMkGgNS7l9DktN9~@tik|6(r0H8sBto`O(j)hEaNN{FsM3OJi8+5wgI_>HWt z=H+%caF*ORXKgpw;Ssu!gwZXQv@_V$vaw_&~Qu^jI zQYj#bRdtF~?Wvj((%jPK0XI-XCn=*vJyqpNyXw!|j$6A+6!)c6T6T_~1hcLgf9Yxi zXM`&*O6{nP`7EBl`_aTQ;e^z)xEkeqD!RraLIFDkyS)hZ!2hZhlPODT8&bzbO%VLnuq)2~yUUt}oB|lK%i(eaP%G?OFNzDjIyBv*cclz9H^PO*u*829T#`a^9-S6XR z*BQidEr-8SC9I(W&pS9C2*K~JnNTcH`C5T}eiI1Hih!U8)qT@vIFK~jXj#|-n2{it zCL72R64A>#T|X_F5l)-XL+LhPyBgfkLEOzM2WedZ+l2Ds*u$3f() zpjkg{g}=JFXg$VA<};ikIa7XwSF7(uQCMBltbp4yH{8d%R~-$^LXevQI#SYUShpw>o~O*Uc(pVi1q{)y z7f?(Qc4THw@VVm>zz2OXXz|hDR9N9?-A(6WbrV65b5NgGgZxq5j^epP0dm` zxbmqGcljd`W9j&3=f<*jTA^ z$gl%~YwiV!%k{uLf8xk3UB^A~Y-PB7%X<-f(UE;wDPlk3jss^YWO$jN&Fq4kfDtw^ybKT_v3;O6cvh51=!6JLe)tyt!(&-q7g|;;%dMu3s303h zmKT!Zf6))|oE2U4B4#&tFMNP+${`1U>y$H3zLfLVY}~?D%yy1Y(ciMcvLfrHmKTn~KcWkTRh4!0|Le?mQy<`#3KmDRdhKR`Vkl>*&} z5b1JW-$pixkWw4)QvM`3bWFn+g_2S32;K2pOY;k9Jqnx}m>TJ9OQ11W+6-D?wi4`@ z&x&@J?{4PDHJLbI%D4`SF8?j)Tra|lLnsvg1UjXwHtHdZL>3lA${-ok;|Kc8*dN+{ zHm4R{6Pxb4`M%;YP~5N9dq6KQHFcM|>T|M=7oYnj0V6#=C?ujh`m)Ep&qM`L%CLZ` zfy^O62R}Q_rRdr2;1mZKMRpc!hbXSRjGu=G`$w5{u`0=eE?m!A$g~{<&P^LO?x-gd>7o@=V5Z9 zzmKbBb$(y>>x-ANQ%XhsW5YDiM56^Lr}0FXj?^%ad|0H_ch8cGHUyC2y0Ti?&0=Kih935)7o_WF8#9-X?PqRh(s<4f;aDW=Ph z79>m`3ubnkf*wYfS-}J%1AG9Zta}8HX18wqbwuPic_YnvT8ixo5z$m1LqUPkN=Ir$ zgw1)Ic|Eidcl43hGVFp)lV(9_hAdI_c^M6d#4Wwpz-NOll2JCv>WZ+w4o%d1b$LBs zpJ|~2@V&r98Lwl^3Ik0kUb|Ala?WS0=zxi-7TO?tO{|9%7JLv{rFk~wju7MAb+X$i zXX4%IoXH}uLpoFD+)z)t+(DLQB9dhja>V)}a_l%dnrP*s7WLw956)u=KGbb$wITzJL5n{|^pX}sbo}{OzzTc=X82mZzl!qM7DqKokBW%hwe?D{ zMJqQkwdU)j%<@;4G~Yp*fW^7CB-IaF9#qWDRAqtaz(8#xZjyOT{rd8KZXIrvv!xCT zrf#hG;y@unEsN)3YEc+MzFGivTy41(Z@AEwGRpWlXa$uWx$U>Gs3%6o(#bZ_#hx{Y zA_EH)vZ_&W<&4Z*0&>5ffQ`m97h%3Oqzx9dnc8(A7LW^rH}w?R{08smHFN4^!%VGd=}iL-jX11el)(czCaaPr~?E?)HN8-saZPYzb+Fuoty$ zKqT3^YO^8tsabcq{g$$A39LTW>EbEec|qLeoftBYW4HO@1r!gaR<~HI=nXBd$byYF z_JhQBIUZElAu`o_!B;TarTMziKm?iG0J)fT@7Sd2F78{l>W1*sYLp{G`-JVWi1DMZL?cLVL` zBYSv9B`&*KZ~53i2#@{+z=u8Y{?Es={%y@-W@h;B02hw`8Q{Xs3B~?z0%M0_|EIsh z&J4x=kBf_)1B#vFe-jwTe`dLGu>9X%$hx#UlyLjGE!&F+D*~elOFys;`Z`;my28k? zeRboGhBYVXncUl1t04j>NTEe@ks1hgaFGpM;x!@YP*Qs6FeE;0ot6THO z-krK)aJz3(YjC;T$f;M&n)cRImAbfj-X6^eN79d0WQWvabYrwLc5CR=$ied6$7YLt znOt`WhQ#xDfv!-=&p5}~gBD_sz2fx|cDbtdR!shEoLlBII4}OKJz2D>GWSa95X>@N zH%U}YUzHPv5AKIeK7MD5e!Le~Z5pP{E!w_)G=tV2>dWojPM7Q5Ruf)ktGDTxjow*r z)7J9CeXF=MpV@$SC|qv!DQGdIUte}+<|mDOFy`fuCvt({pDDTD7SN-ah0AAfM5fQh zVRVV@1~RY78r^Z_+lwZ1C8j??SC6F_#!n^MEj;7a;s8?p!(3xd07AP3Z|e?La;n=v z%s9T4-Ds0zSju}2~Gu!GPG#fIt1Kz04R z@EYd}>9rvE)4_?jkw;Ay*omvmYK`+vwPCWW8)E`aA79Rc>MN7~Ik|s&(Bt0rvtJ*t z3ocI1JJIlXwDa0KSs8TOIX|%-VFfm^Yoz?MlbY+-9 z2(0rQOf(XBE&5p-Ib)t9vH(vNjIju&LBL1#1;u^*w_WUSHasfCLvT~w2i`S!t*)=I z`X;1Gptae&=o(q$oin9jHqakgSN5COA1DnayK!LEub+0naLhOp>{vE2^yCgQ7OKAy zKF5>TW9%ugG`CT($SL?ixla$G0fd@ScVuy1d#GXa7+;D&=Y><@#^4vbX}( zTB$hVBkrh81X##oTbFt45Qlq4z+s=n?S69hf_YIS@}LPiKCIUIa5J5*aJKqAW8PV_ zL<}+(-wo?@X@EGPa|xrjeA|8<@0Y9c{NLc5aAHY3?|1h%C-Bj!L;bKp(3VbVWRJn3 z8ASg9_S(a*7#3VmhzL6g1F%QX`h+kC&~eI!r6!TZiGtR-I)?odF!ohet zBxNZB?&KYU50YmGi&IeerTDCHyjF>i(E=aO3^^8<1Z$RH0r(QKt$r8MRN99&Rb=4+ zh#7VerQm6)j4uT7_1D=Ohr}IdUVzADHYoeGE91jGXH@B<2?b-5X|f%oSAD)_DH#`~ zt*l0-Rr|_8l9w%4Tcs^IKIiD)VQFE<9f&JWP&mK}pnOP|1GiGrYd3=lJQb<03O9qz z0A$*H4hiWpk}yHz-2UrooL<8>+SnIX1s`^}x3umI8BE1M1q%M_j zNhEz}H_XmRR@b*SSAJ!l5&QLc1Zn({#%UJ-jD)1eIcUKR+3ygS5y@`J^#L$F^JXdT)nkB9Y2_*4@QMC)= zM0boS1108Gw8_Xt@E?jO;QP%fQ`kK3|DFMpurOcr*CRc?!o9^mgjAZI^~gwL~@tncNRD7 zaGe9e`q*hUXx?v0D{W-pLzCS&2_D8)MjmwwpvoK6sYm>SG7>0=zAW?DfU?JAbwvrB zjZh!cq?U;P5bMMdw+w;gi>1#*{cbc-z2E^B*LgNp4Y1SB^eny*aVyGfH^YObQQJs3 zX`EgNXTsh>-!mC6{F!>d0HYh4uDXu@DykqU>+2Wub|` zmJ}+G>3GnsDKp+0Uq(IVu)~-<=n2hfKQ0b@To%PazPA+ykNOssbi<5NJpm?yp;iSX z@aC}x#t{tE@e4>H8S&Vhoc~R@6Tc+*_dNg?4WbSEse1bnS495;+r{s_C8qaYA{K)J zpxM>tzrLutVF^lL@Uo!U zWdbplX_>h`vby`H*50 zW+E|m_y-KPBcbs}mxX}BoewkP-;>^6P!e*RWMvh$7HLK9?+Bhukk@39dU+dktbxtN z1AS<@RrC40A7ASGeS96Cyc{N-8A*?|@@#sV15?Rx_R)6Shg;%NUL2wwLXOEcfp$>< z3$@^vBaUt@u_G4TCS`T2Wyfc)wDKcp`&`>vawdr?nodj|g`m36l>hXJxEK9xX};9} zv^VvKupNfXRHi~zdfU}Km7e4w2@|KPw*v^nyKwTonm2Eb9QvY`wUK2k)Sr}s%!tn9 z6y&N&elYHR5N)Lsnsm)u;&u&#T%?!nx@rKEa z{y^83&{9vOUj`ldb5k?~as{>t&Xz()S^)R|*n97&rqZ@=G_)iFq7XtS35pd*e%UI*0}j`(jyybpi8zB6}!(B%A^BauDdmzF1X8JGF+aj*Ds zs4L04vz{X1W>cXt$#adTu71l zRzVa0Ss_LLOqUcrG1Cc6B^N@lyNBlRSZ#5}u0zw?9qFnr8ngGxtRPsO7tegpqMLmB zsONIN($6z5#C0EpzWW$xRok~f!!W2Uuw_trer93p-1C#=Vat;~u2G}I6i;Fsi)v-* z!P7-r5yAAdf#Z0CMWO)x>!rjq+G^q+C;=g3dNVnGxiZ(9F2bl}knQY>7j9-EFO!xO z;mTvVZ)`*kf41c9)t@w(a=cGEec341PY3~L6sifw-$uW>+$F@{tgM`+di(R;{uud+ zmkK+*YXaG)m7yxaW%`{4#W7CVXL_F&+KHVwv3uL-^gB*GV42-xsZZyJ)V>9PUEVh$$y}6c1UL3h^Lid2(dOle#a%)?pwup_C8CFmB!N;50x_^ZfDcB z2JOL&Zj{&0@({K~XJ%!O~PV%J>1 zafd%!{I+H4%sv5w>Tp(Cp9;qNDk=Idj*_8VxbQ_&yygXav})TH&!};S_Mrn!cL=l2 z60a)WXx)rR^Br(I?Pgnf>E~+f!rAt>4+qEgg?n9OkflXlT_`#tP*M+>S;yPck>JT-qu`t`MC?r-RK$3zN3 zkB6jC(lY!V*tS;1iQnmT)yUP?8#c=xa2dqi*gkt6)Ks%fr)9>WNp#EKHO)4<%a5hu?$?5 zDYuMhdgU}9cV6O+i+7Mk#pd}MF&)>Xmj;~Dx|eBwNa)E1%8d!S?gu;a?ronw+cgOs zdSa`VQlt^XH*!6ikn~Xcb9{=Mi({Z%R2M_Le22nJpriGjh2-+IE`=$JM}fj90+Y>m zC5z!D$sg=`7~~!e|5O_whAT1Rvwqy&ZFKh|KOBEHEjilraj(Nse8UBsb7o_g*K*c7G^W|F@|Ydd zC3^eIl~s0`6^SBw6N!u()X;{A?^ItQbTy|723|npBnGIS=eiD z$Jf`toE!rRqxD}GsX>& z<61oz*`1Bz;MPqy7r7#ayg#$}29nr9}}}N8J}Y8l+GM@{)Vwkv`-&-UL+6efH;< z2ikise&a#<(tVg_n-G^f!^P*+iBmg%_6y9ROzxBqBw=dbN~!Q?&h zq=3e%tB>EqKt66I9Ewn6$<6jP;6AKWksCDdV1c%1AJ0}bqJZe^ZEnSy5W|L#tU^oo z=zHGrb+^sB&y}VP>}0U3N274U9V^lH6yC1K5tDz ze9{|OqAtj@lzB=hOR!8Raw)*FO#5X4d7yR24(YCeFn=gYuE)tPKSlI~ z$WKPDHxj97{Qg@>3cZDF1J6#}eeTNiRO^9foGn--NEo1iSeGd7PH9WrB zybk#43M+9gq3yNbheN~NKHlnf0SQGdhH3X_v|4gL96tNQwdnoTccU-8_Sh*I1wGcC zm3GXLOHp~FZk-|w+U$<*ctNNa=|c3#oM#@<=`IQ zo#nI$BVzg6kFnjmIXewpouGw@$ZIwowOpsSL@eJy#0XR8EAegK zIfdTGqM;ijHzuiiAui7Mr#9^kCVIBv>8;PM`2H{v+dsu>t95&CTCe-Z@Fsz7Nc|eV z1f4d**s`?ai&uEetz9kAzNG##qnIKVf5eR9d3)NT^y%P`bYMeU+-i>hhbPh*8{&Bma1m zsPI>TxU7V<{O`_9Mc-x$vWyD9$~F`v85MpNb129$D*W-XDMg8YJU>*F{9jdYSkLA> z)Gmnm&@qmp5qIi08*o@GE#CJji@8Im-p>hjcrU#rwm)+x$C0O6ZPts>wWJqxi*aRf z4>8>NdK@;BUK~sZN-pjwEDuzCsY$<9$x%4iJJu3r^`XeW{lQ?5&ezp<_XHg4$pZ~Go_0EIF&LJ)1+?-vC(s&H1|Gf3S^Yyi>CLXMN z6XvICSe(CKe_8py!*b!g*LB}M<9&VC>upr3ukIZ=zIZp)k5Qv~y4%vlVw=UCmZH@qo?*@<&N2} ze0;H7OHu<>BFa(D6@o(vuFdx@@b&lxkM%0NP042oRP9KYW_V#Z`z>6oVy^p~s`+e^ z63IgP%V>p@uJ@?dJJgr-j-9HV?j|3yu`1PWT~AM)9P6@rSN-PZstFDox)i7ydfB9V z>-_t)8kW=iH^s*+_nymaog7iaR|Yl7c|?tRr&KpP2b!yXBUK1}nz6fgX4dRoTF|=- zNBHIrh7{bi^N_;V& zF%`%+jGoR=NRi3|y@IsA(wQ~B3iaYUb&ls$*PzhY9VIk9>9MUI?Yjt;@Zqf9C(bT`m>$T)mkKR4d0J?h28ew$PLer55<`t*6j%_$Ww_V7 zOV4JJIVC1*9`Hmb%tyccDE5Y4E*!sNK&m5GK zMG|UDr)Z$u@x_a8R7+!W=RbxybqQvNxPKmW>b*G}^9~vz6Grw3YZ~W7T#rpY7pQX6*O?{6I`e=rM=%TzuBWuP1)CfHmiOSF7Ja*8>(` zS9*rD*b83nHGC-RHny9~wWj9qb_0(K;kW32fbY_yiUnw1v>bY{W5<>v_vQ)XZ^86^ zZjP$bZ&hBBX4+@0=m+z*%(g3)JHGJX{17hRlcd+K-E~#$&9|2g$6Y)d8)K~EpDCKi z?|t?9ZjW6|XrE_jcD#>BVd^L4d%2YtqU8$`-1}cY!5EtpG`Pflj3}JeuD>!;HyEc7JQI4hR%M3EmzAM?t*Ts)MHOPJdW3YpF4_6u*^P_!X5d| zgD2cx!eQ&(L*M3u*ijj`e@ag=9%89-m@(>Crn~9ba3*rLv%&1_WDRCla{O(rt8p$1 zhGmLJ%088RKi`HeVCvUDXTC2O@HkmG|7r33;Y*(c-sMSe9kc zH;qij+(SseD5CX{_jhlXWVE;P{$*R);XJp*mZ#4r1{8XMZORYQIBg$W-4%l7$R$!~ib9qbIOs3-_%VOAVnbmxOS&P7X`l!zk+)@}K7EYAeqFI6n<02d{E} zrzDB?x4+}U&=MJrp54CXaMlWeC*JCLk|}>6M?g|6cqgUcGSlOcz&MlZ3QIGbr}m+% zy*LXl@2vD1Br1pU>4@naU`KN>85H(rN8a$oKBeR3d}!I+(u-`0F^{;Q)fNAh;gm+^ z(|y5TLKl@LrG(N6B`WvK&i7oMvO$}7XMtC% z=jTlM#~vrcx*pyx6(h}C(7pNAX%B)FiZld#Ph2PHN7*QqB)`Sw>q;u0H?Z~a4 zLLTv0XQXiI@|y*}V{$Z7d`T;zuSk0zVw;>r$BKq$eZ~Z|*BXX>vd`XX^4-Ve9c$Y+ zmwkC+GFl#eya&a``tFse?Mz!%iT&OaOH4&i-mMTl*f($1qtTilciVrctd1O|OIqB7oJdNf@G;;LTc76Sp5=%qwTrPao=}%}VrgDWXPPKOpN|=dI-9x8` zTgeQC_tG#qX79AyQ6Q8iyIYn~c*n^<@?D67luj1^$!blCo|Z;)fLRjibs(b($d zIF~?b2fE1#H}SQpN-%c=xo>w#ngqJ$Pt+Dq)l?LoJF)_&svf>A)A3Z*$&~m>;YuiZE`~34ySaEIdZ%ky;2zc=i zM9vfY3A?SHg;-V@oGMAO?tN3plvp@0UOrJQ;WuOs$zeSW)RuZzgAO{<|742FJQluq zv#a>d5SO5Ojk3=>R?=59#ikou1UMd)bl~I0q-yzZst2)$ zqrM2MeLXtGUeZ{_j^a49dX!uDu3R$WZ1TIUr)N!-DBJBF9JI!iO65N!PabR8htd!e zKID7(*hAx6L9VMV;)ZW;>(RcJ!`z|S4l&h{Ak7NF9`v$itLiO}`6Ck5;KLm!Rh)GU zj^|bdp+=6p3;5Z{{r3Cy3x4wc`iT~kdki?f*7cpnrwR=CW_L!qmdtdI@Xn6ewU*qW zI4TN4iw~l!$G4B&2te0v-{RPPd?v?HpF){C{0+HxHzSwl#a9;$tlo5aI~gvO1A7w( z7Mx6!7@GH8i;EZf`Ppe2>cMJrlge0L)Cz`4kyPa-)exte zLN&dW&>ClD*zIOeDP3(`mbsd$7d-o~DlA<;{^p&dTMkzJm~b1fuuu2fDAOGE(A)Qp zNtsPbRhY^!6OqNsuUu)Xy479>sBCp#AsDgVx;b*%gWWJ#;k9B)U`T$*g@=hL&EF;2 zT1<4tSG;_$3Mh7`$0FoNm6XSVq-6?C)|>t#R%~e2nHMKtI-m=a=!q|x&fdu7EUa`H za^ZEoT%Atda^)m_{`Z=E7M`I{FMd|*9Rk=_MCQ*CG`&$0Js&aBK1Z(knmHY)RSIUZ z@TGb0>@?}zK3coYdzfi~<&YllYmu;w@N-ViKfu9(M4rLIn>Nwomw4CiK8|zO?u()~TUQTOr{gP~7W6oa_wU$8 z^K^c{Vs@o4l1<*m=v zufq~Lo5ZYX2D&9jxtzQsc>2|dTKvU+E>?l$1&%vXth?BTT8>DZul;bcd6oF1F0{yd z)$oTi$#_exSn#Ja#qE!GX!_QyICL#YizI}zWbYuy)*rpCx&j#}K2Ew8-LPzTTWja@ z^6Oj`Wv^3e*&J?Ocpje-ZZ_*T=4s;pgm93=@l&-XcdYx7Y6SVR=2-QO)+Ge%$>#j) zl|0+Y;&E{&UPIYhw2mRqFJJ`(DW;J)b-C_(-LKq7wy-hOax@i0&8V*UtrjSfGG@$vbOx8fu}mL6nv|16t_ycG3@{Fw0~*wOT!mbLVX4))W-<|Ue| zHzH3<`MB&FedDk~dfN0>%*gSK%8@A^KQ7%`$&X`t7D;iqY}pfWu8n(xdGtRW%@irL ziBYbdZEWV&`#5}uJVi39bIm|GyssGGl*^v8QVCt`teVrlyS?+m4~G{$Ez6JN2dkW% z$M;nqIngj8HM$Sa_3gTekIvjh;mT7HlV{ZG4}Ps1uhsOzx#iSf%VrBD?Mf}rR=4lS!d%z!Xw5&RoHjgUUXe84vumQq#UO9#`|0SnV>G_P zOSde`dBJQmu6_L$apyi+Xh}9J(ewJQ-{;WgZ`uts~y#tnm1wcfyA--m&&fkK6;_LN<%1iR2XBu^?>Uv0* zxoJ`&R#KBc``>4|bWM(};B~uM-puDHv*`icU=h;uz4G{E$bHOs^{w;IZ<#pguDWhV znN1nZy+WKxH5GE@H^v+kvFUITdN)xg8*^TN+(k9}YdIiT!R+>;h0MKQg&%ZLwcUf4 z{m`vcEweh|04ZwNDs1y#UiSLhJ3BW2c-Q+%rSGD;75aWSyvg}zk7-Ba`Ye8$9DER) zy3PLX?t!2MC4$0XFJ8fN?@M+k+=TX}sC4cz5EAESOZ7899XW(odM)_LcH36ol1H~K zXC;@fhpT9CP6pmPW7QGc5qq>!xmoH-_B1I}gqy=A(?m+qp{)A~w`y=~>cod_Gui`c z`C<-Zu&NmnW7Y<;;;7>C`vOb{;FV8P+(N}^*72CWf&D@{&*Or@Xv=)ivO#Zk6F&< z%*t(#0j;jtR9$?LdG~zotS=3xdV=d*T?bjy=9+%p0ki(OxM{rZ&*ML*pJ-k10ko0? z11=tSe{ro!aU|J9_hBt%mKo>(I@DGltlVJ^=(l?q-Od!&HAft_V{C2JGu0?}>*VK{ zkZpJi&JqDx1O2cI#!S;aK!a%%^qe`1_3DyA*myTWaroWp+>7cn3tO&yc61R;^G%wc zQ=&7{GowH7H21>?zsXY+M6}NnkG=Hg2>X5V^Q2N_uV>@}EN>Zm4gw23m?hJkJGHm; zUAiCky>-)gqoibSYp@P&Bl&?lMIyO~q>uI!+9S>|H0l{WKW z*~6qeA@g;<*S0rc!YC|*eDd~BTaAIMD;C?9QID5=%_ASLI^43=bm%*Fu-ZrIam+Ta zxT_b_rkVVNvs1SCGDoyW8-%~oN{`T&Xrg)CtDf^owJycPD{tx|XLqn=i$$(@)Rk~d*9$zjVJ+sxU%ywU7bm8@~C7RNNrG|QG}Jc@Of zPru9#NTP{qh{3eJXczW+zAEx=hHj52d#dj0g8!i3k8lQHflIlL^a$&pn}p<^qPL2l z`2GXD$?fFS>U{IgmnfdtYEIIDuR>OLl56Iogb#YXXYT*B8n5*2ahPMKi}Hs)(Z}0U zFOD8m_^z^7S(E$Pw0v7=U;;sy`eqJFwXA{qWeWS6VhH8m-)2gW?Zt z5AcQYaCz5cW0SU69C)3{TVL^Y$@J-B{Q>sxt1@y}~~OP8~X~*|^+25K^a#yv%#{gIx|6@K!!EPvCTrc@X}i#QK4zrExmtocG}f5_9=*eug~Iu|-BmSfizODYZYYMh14_SL+%*zW>M z^@2XJJD%_WMuu0F^l6!bLh<5-J|&rl>(RyTf*oDb=4U_89%ZOJtvK?7OhN7W{>{5H>$5}Uv7DJdZV_elJ*#d3^_>)+di`z7Ii$v@r-xv|hZBEXGk;^g5* zG;(wGbkgt-C)iMTk&~1n$SX?OF%r%ELtrCKkbq|ex%q_<)=WR#?H24$3UYA^hBq+@ z@^?Ap7Ggs*(bOgo&E3L7;B{KzAv%ZFmP*R4FVXggmrJhIK{LX{5D&m@c*kIZ++SV4 z=#!HCZxFafj|2DXH~)DZSp3S>IT8ojKX{E#=m)v;6ukQdpm&uzr6O*HvXlfC(W{Nt4_} z!5xp%6D;OM)UipdRXB<>|Wij%T>v$SHht%QHCG({J+BX3?CIf0boKY~aS9?j`3ArpPJXWIlY*%95d)|o^Ko`e^tAq5j%{C$0$h({v=j=K2~;VnG={lBb_<2qtVx3C=Lt`A@%QofBl@@n2NT@_NlrdQrx2n# zQGJkl!Mnq%cL81xKlz50}PP8Oi5uJmaT)f>v)`)b5Kdztst9PAXlAkNg znu~vs8_|jAOmrc-5@Aw^9>k+WPofvmhv-Z6Bl;5qh=If)VlWY2Knx{@5yOcQYx}tU z+B;~ywYI0o`i+89T{mfh^dE29kp5?#hNQ%LQhkWz974qw6=0GFevL{J6lCQU_wWA| z7t$c;X%RFuG^~FDjoP`F!b?NpqowfE#X$+nxaC0xeuQB)>sAVm8Ii?IbBs^Ghi!S7 zby;K^Wp?}eM%grVG#xY_c3YTPiR{@UcECR%VvPraq#_)9I!6$GjSyfU!hj$M!5>21 zeEb7^VN{9}4!OAzLXNr-++kh`CKeiodIt!*)qR{?T|NB>+OSp$CM0JVvIIj<7{F*aTPEZdfI1z#a+*~}Jd@ucq&^QqOUABe;472lzNez~{nS1q6AnkwBte zs*Tgd2tjThPC>3zfKvCRN@asT!X~br0s?#@*4Fy3&H8=5XGpM{kGr_Br>`?9m|*1Z z=T9&sn7Mh7;4ApI&J8X7pXm*OKo}aTNBFrIY52Pu9|&+es2S*P669g39egyz^N=pd z%RDs9$H_9>*V#%$O;*%KZV$m$UQEDFVebw_@tqDzL_vut6-lA!eNw_P(z|64h`op% z2y4VageF29u@hl}&_WOqf(TQDHbMfi3t@)PK}aGFA#@Q^2w{XdLJwhq&_~E1L=ct; z1B5KX3UL@=gwR09BaR@95eEE-qLroX zq}xq*lx~)OAN^$pU4|NlPsoGFyC{9sNi+xg*cQ_*!;B=xFHDD+jxk#?&uvxT3T%DE zBE^!=a$}qIwwCStw$HO#u=cRgvQ=YPFzJ|Hb`AD)c7VN){X3Qq>y9nvVBsKgIB~q; z+``$*InG7PCBwaio5VfKvzy14mz!6SHNVKUf9rlF{TCfE^3m_c=82`I6#u{#nvLaAYZ95)R!BO#p?5`)jCu00zoRFFfU zFawxN#zJvO5CQfvR3PCKA!D*LXiQ-yvtiW0b`H!jO=uSbgxR!5%*G!2NU(@f%}~CH zLE4R(Lr6##nuip?d4|DFGf*2dDv|3vJ|hQ^*-Ae;lfe^YPRuP(nIel-+n9#A)&@PZ zM~1JrYw#fF#&-5#KC*>eTvAbj#)_|wd?4SAq(%zo}Y3C=MEOYVMk@?AG z0J^N8s2cwQg;A(kS9Cb;H(Q&SkMhrK;0d&H#IVLki$d5&}c_qP}3J*UnJ$m>VzqUSz41OeoTx6=ImSM!QaAF21nUp20*e1fDc%=2D zX{#En5GGOT{@WIXKqfpUXbKo>KX)4~^#=7@j+kf*BoqLC#4bHh-igPw3M(s#2&=$H z&OCg-p(R*Ox5#vq3=T?7+s0Z*WCNS`R$P$KWl9!VUJuX(Oakp~9PRwI0AsWQ3gQJ}c0fMd1TcPL zps%66v($MMx2Ze}Z_B zAEXC4L0ND=gaA1p0T_KC`Xz*f1R;Jg2n8`f$h{y6B!Glh@DCJz)8z%9lIcE^v76N# zfCRBi@P<3^BPdWn2&9LwI4EFaLK~92Lc&r=;7-&K&>7u+^o;X~gMcMk10^6WvgaR~ z_>J=!iWB$@YkS?ic|R1@HxzRhZVFPW zhftUuzdOZ{7+Xju0LK2BE_Ms=n|kx+!MzXozsxfz1iLg=SZwvMJp@fRS##5Iz%=Gq}0 z?E_{qzj^W@v%y}P>Ta@NWJ73VWI|G0Y;jT*ehPZFXQKt)f{80EElVhj#6vn@AQB_7 z1k$$Go#j0a)W+9`6eMS77EpOEDlJMWj4a0o9w!y~0fzx=e{p&AKh^mBFEtv1PqFql zESsqggF$>RgoePbWtK_?d{@o&BO?kD%cvF%2Xdld`xO&QwO{toF4z;@fZ_jp6u)AL z`rkoi-LuqEkn15p*jccW9D0@$(@4>zV6jI}*;kkWXb}w?eV=OIrU-mfWK;6Jq~Vmt zn?ctM6o zBlp|G+kB4Uy^pz<7#BzvrDT)J(U`{2()g-Mo}Q7Gd${|+pkJPSc2q%f>96?V77D{b zjUQr@;v?5R)4D69is%GYK7V+@l^VPCR&g>6X08p6?ZHB1N!iduQ`HE-eFiw5To-;K ztSoRXXtLjAKRA&!MZcHiARp?DisOs{r;x+O>sA%~Oa|F%X+FYd8^bpVWJ1-X6vnK_ zu}tcy4c7=AN2-n6ynYNKPoFGKEKb0s0_mAasjeZKk%s`ZwqxrBJXi|`Y&h1xuIi`H zY@qU}>zW(7OTDbpn{>zsJ%eO6wO2RkR0fGz%Am|*O?Hm{)^6##hmGh3yU3(os&-8& zob;R9{n~Xb_QXd6tw<)s9`zVjPmW4P@0#Lt@em%1? zr7#viQ`y8r^y?a4N8CwR!?xtnpj*5k^OM_)7eabm>+!xd{)PL?jEaK_1FK*S2UW#1 zo#MGZJ}`%S0F2w`9;CYDzaqp>u!c8#}f zj_x<TH!XP*FwkrRDjBH8>EtVhbTROvPPLd4;rN(|)3V=qsews82(y0|HVcr{CJ}B~sre80<}Zb7 z{uO19uDh)uiaf^~@c6WpWFP?@UzAvk%LZ~`H}RmpDZc|i z-#zbTjn_n(RQlxE!48jA)2(b)f;C}VVBa=)^-j;% z-u{%tjy2iWQZiviYB??;K{q(jJ+($cd15{+0a0Xl(k~_+AR!Al8Hf3O*)0#Q05%yj|JsHNrr-d&tdzK5I@8L@qio*eVcaMB=iC#C=W?OhLAQx;wEWw zZ|tXogflu3kO+w|=x>_AwJ{@ca~=#Vxtsy_Q~#sJCiJkm+mr}m#^F@h6N$O?tEY;Z z)Be8um>Zt3HZbj%PPd$B=WRQ6)D;iix`*17^VT9yUv934)zN;+%MB0R`P*PSa@2Of z6z2?hg}NRg^?TPj0%(kh6W|x&X@mYF?fRVtk*{R-b9N&v&FO&4)f;JNn5 zm4pO6@zmX(p6ioXr9HVacT34+f~ZHOf!H8TT9qhh)QR}2&sR5eb5v|Zp9 z-~;f<>x&LZA95N_LIA3WjL64oK@6FKr&^x3WRMp&VshXvZ0j1SCCLSG*?6!S^-|}S z1jL{S(LrK3NFD`fRvUF#bsX*u9s|(#?zfyOh9jut%*=#%d}xGooFi}qI9eUh<$E^r z5-^4aWl$j3#H$xK2aagrY*D+i)QtgowB}`t2QYQTS+&{dZu+?Nn9O(pZR*l~e(X}u z1F9UO$slaHRme0K$>1^AAed3cuwcq2xwOOnIkphyF%QVgF3s;g-dl18K+j(`lG>qr zK*ZFduGa>iT#%NX0-)m)6XWB`qgz7p=e^EHU4&CSrpF5)8%VDJ~tEOc2a`qlM`UsrgE=^m4!fFZej65ke+J}qA!fk zO)mtvONxq0^3wCu3h+vBF2&tlk(ZwjlyI+w59vU1W@-k+?Z^esJhbBJ1{kK?mkch zRHqlG7N+KA<^kxE!lIHIk4i^<{UAF_yt?60SpY(#p#zT~7LalA{$mjFQFUGdrwLfN zI4h#_EwJ^yCDj#`Egff$bpq(ym-JL*&GgiD4xgP5z^4}hSt)f?{D3eGpbOPpgXLII zcawH>|Mq;)4$|G^r*xsUaCkkyWLbL*2@;oa*yQrm+(cMg35f}5S!uaRcyM;ruplNc ztr*}gE-osD8G!{0&(5r+kk@==FEzZNbYmfzmEz2_%oHG<`xor<^71M{c}gYMwUsTZ zsPOgEYH;mfFZDqs=mLXW3(A4lqyuT(QDw1}xH6zHzqkh61y*xWgZ615&e+tDzaLtnmEAGN2sDFU+b%2S8$2-w=|&e;uhAUxsY1KiG6opt9<%2KeLDfuDf2;XhmZd)xaw3{jo!u z`o>mjss{(J-yR#ekH>t1I_V!>HB(jBJE*LrKQ?u5;_}=Y{!3ubo&lC%f1_FD)w-R(?`qe0WDx&$VkO`Yz({U2T5?fM_&$KmlZd7)4d( zAjGcw@-J|cz|a};96DtP8|)At5gq02;S%Z&pta1d&pf$w{oc(B_VSJRoJ1fqKLq_t zoBbdf>+0+8?%wRzg)c^SH8-8^^lfroD>k<e0%m}ohz_4){xyMx2g*%KLi58)(U@zYWij;)JeNk!-NKCnmwfU(vZL}- z{>n|pP#Cf5l%g0Mtfz#`aF3>tV*6b5APQr+*#JkADgA38Jqz2DDDX2DlvV{1u)CvE zg%FT5P8bDA-G>k$9Y}W{M1WE_=*b%_Fj0N8x$k&eTTM664YY+H_iVPS)&UIAQYgS6 zLdVyRUV2_e4#1rcxR#ft<{o4EP^cT7F6{Y)XN&jMQ}WTBt_@XC+kUM8QHvrctS>DL_1T0t^^9 zW-iRm%>uc)xmL;`JZd8$yR*rO;eUtcaBdSpwQRL8W}+$l9G5p{xgi6{wM{jB<%8U% z8@-Om1e++wFn0)ca$H`6@h5;fba&V39$XzzlXNVirIM?(04BZ&T|)J+X+TOwN_s*H zS4eqSeh7fpJ!GNpmluCl1Fs$GWDaPfF%B`hce>p7B33+m>q$;4 znGFt1-C-d-2Dg#1IjBqhS4W>d0k?x&Yfl2B=ohjNMR3NzA%Az9@ZeZqAOf98O;AdJ z{QTVV%CReFZvyE1H;lFI!~ORX@oMVIYDyaDgDA``3T}GC>w2tvI@oCcM^E<<*6gWp zEZ`Xu;GG_xk(>&|pyP^?Du#RdMsZYVb=IHg$f?XKEC674my{os<&hKI0CZ4cH|p4D z9-WvJhXY~?Qfo3=((3{MPbyFW=aSIYV6Wi#P{0}e*9~I>Uy;M9Oj8)ahuG|_?5r$c z?8NCo;1c?&>J4F>6>ucV)i*RMCIU{$64pbkob2M#lWhaFBLI4O)LP%k-_$7Mw1^s4I&9^~i&r41R_0Nj+>qn8AHmh+P%+ufNFj1lilDt+Mj< z-;Uwrkx=*w7lSPdUW`u*tp(X?Yip4`jAW)BW@a+;Rs@3aA62^R z1srSjW3mdrUkNO!_`j?fGSD(I&^xln+|$=Bc(0kiuan>3>xSeM2z#XzBngrd5)uSO zDVe`2hh%Wj^qYmu(T{Q%$KyBZnze}u@4biQY4ISeXR%2U!&APmQ8|CHinxQ6| zKAPqKzh>zFb2US2S|u3!EB>Q!Xw%65h3X-Twd$e6MjDZu>W8#~JhX$4n(6$iAkqu< zw$P_m5gDwN5y^^H$Pu!rRYchedlkjgs6|BSj>-~}Li?nIlgg!c%d~ASBT`%|B(nJ* zN{NKliiy@siKG#`|0pLCMOYyW5psw_rY7M>EHJPA@JquJhbt+(hoH+|PKn@tE)w^D6KT^G@+; z@;UH*;b-7i;y2}giMxwu#RuST6L<*=0(1h_0)+ydJMcT2cf8*zx>FgN8Po>zwN1Gg}M6-e@)(tv_MAch+VicGT1M2CZgsFhf- z7z?7nCJ+rZ!P!R6|--d|@Prgfh8uk}7vOo_^MMKq&oIrzJg7NOS4r7{&Ce;$Dgn?< zMbXxHC<_Ic#m5{@Lq~&0D^Q1Xqf4oASsSYV?D5i806kFeqlbswP=H}<cf429=y`9pM>o9tEFil5mH@aFPa?rlaftC9pPH9>Hb+ zTEbu!M12~beArPI?_P}0Cl&fvM;rsV8;;l1jcA>dw>})^;fz1x;I9LypdpSKagYvo z7C2McajLPtrm=Yxy{4^YT3A(v%c58)F&sIRQJD;c0MYRgejX45gyV7=HGUl2103fD zYAXs`vzoHFYM|k8)V1{L=ywnvq=96(AW6tVN+31ua2l-Dm>QI6ZbTta2UJv?=4{gi&Db$~lH|B+D`pz6YI@ z$DQFdY;Qk;sUMX<6emWs3Kj{bA{;fJS{e_iQ}GU{$Hpq8qcL9L;8WBCVDeaJTSrUn zS)d>2jX2|T(zh|7RKIet>{xOAF*L^K#PNzwG7m^Ebs18}DMHV&i$Gs$M>M?rQgEY- zArD{?>gp2W9pRj$2cWHEidyg>nH~ngv4WxsTrU#i1ER)lr1n`l?1e*P6QG&G(@aB= z19`C#xd}&7qGBVtVJ@9CfcjppwD}@Ad=?o2LU86R@E0AVVc8A~OR{Q_&tt zC4G3x1S&P#Ch};4K_qt+sxT`bCVm-(~c5{VYUNepOOJ-M^4wC zYr`9$KpJ{D0fa^1{>8&9qJEatBO27$l!oc@3mm%h7nWy&1DSpzotBHA_|Nd6SSKoYL} z96ko?0Gg|2V|2? zy^A*xPk?PIRfwKsPLMzY!Q5R+EXq?9fwLr>Ml>f@sylEbJnW;Pa+&HihktlG-q9waFw$yRys&g5pHb9~!fO-SYVeMQP zk-8de1QE5V$Hi^BM$>5$o@Qvzt84iUDJ@}Tm@I-_;+TY8QRz#;TpX6yWb};rnzR&)koe!{YMM7EQ4AA8G-O`{c~7o6B>tJMqzI@Og*xJ zcVf*a(GT(W-wwyY@i6SKsrNUZ;;p$nyXAEpWW#$vkGLi2$d39q0U7~96w8I%G<*p^ zGc!JZw|FZE1G`J(>$mkJev8cvzN`7VqnF&q zrD7p&X~`nkNU2z!&w4mp4=vFY8<3z+=on3>=12g%% zMpk`M;XdvIa9+AU;m($QGwBT=^hDI`dAmYWHz;QSa*xtZ^IYuNVtEPNc$x~X3C0;D zy*HXEg9FrjR#swPMhL#}))yy^R_*WNAzXbniDgUi7ds$mS9|=b*RA-a$p$&W^2_8bwg$T9kZ+$T*v06 zvWHjOY}Ih=nO!fx7P1`?Tp^I>W#*GZIHnbL?t}I=(GZx)q`tt6KaH^+4T}(Or#sRu8GxMp?vkl% zs$(uB@L~lq;RS1C)WIL7ngiE)jCxTdV>z(i~xi`U`szV)Z^(76U4V>B4@va%M ztn97%d^_*}Ut@E1p*`1@YX)AEE7uBILA$%Yy0OOH4EjK=p+eq3BHh3kR-^8H{Q*Ee zYE;B+SQw3hrf;b2s<62_`gj)jIqPIia}T#3R7pH3rSZ-%5KV4MjSpKNdHyTzQ1qPs z2M@+m0$Q;r%OsRt}+@Cn*_TQa?189zl&f&oTT2O#-!Zi}6!dHk7 zK#9yb4@V3~U9R*|lYNTvU~mS`y)v5l2D}6>vU1?KAQi)8(&%zAO5x~%I$vcWnI(l; zSp^wm-`N)VRIDZW5+Ys z*g>(W0+;3zeNA;v>Db%nPF(2|G_G&qp<(CJJTgD1=Cs$>^x)cGmr(H*IfO399--0Y zI-H}^;8(1Up1P8~fb8?fE#sjb1X!U~Y|szE%PkIlA-GJ!oy3okN9J)uK%^jSJqeE! z26KXvuiYf&q-%quL_wYzSOD2ssEyzaB;kLIzyN1z*%W z>N?PM;7s);a10y}?TxET^Q8ONkrfOrj0?(Q=tW|AHc$hpS!~!HHS4)Ljb5Wu$83(+Da|37_fa#q!mtfximVrM6`+bDF*$1EeF8IuMv+(Eq2$#?pZOY~#83s?zd{>?w za4H8&iHrbC)T-rl8CJWAl@_gowlO4_R4B}5rDtZQrIlya)K-+&)?`+s;*N7z-jd~` z5G_lreE{X(j%JRdHsNNQ&B)1AsU+AinD!Ks%*Nu_*utc-5g=TWm>Qofjs)Al+g+RB z@Q`aUhoby3c7-Jy2*~%ghb`v51=bwh4o8uhj5-t_RL)?o@#Z;;-D7cm&GG8+d&%0` zwe4de@yXrqKiqsCv9I!8JQ3Lij*v$?+Rk7i(jjV&t4}J<@Pyzz9&E_)Ko@NF20Z)@ z9{Vm3#z4e^TM2NjsOYv0!?}79aa&iU`mIN(mGkKoulEv*tT@Q7k}wJ$L)-rBFEmN` z6}`C5t& z7IUztQEF5F@IgnzS%aSb9B!e)SO#-QW{e_4jIpvM&zN2; zTCSA?8Bp6KW#S6CU5bgSSdx|0o_Pd5cJdZ{k;nWtw145B1psc5)L%LRpc>oN)<29j zU?jjSm1+)cr*1DXw?OW~U6v|5LO=#67gwOi$V!GDE(jVp&CsI-L6wY37*OGb!!dNi zO>T&r;rAkF#I#7EoNXMUb92p7x?R%-zh3ORN2BmQ5pjQrLSbvmebhUcx@XYXgNLcR z(X9p|pf;&<)RT~t{R*_}i;cy=j>&tGt=Wvpd#H?PGuhNVFT;_jot>{Y>&#lK*s8Sx zE3moTt?*fRgI#;cYO6E~!PCmW4R=>Ds46T-Yb z`50L=bKn{Rjz{awIr+wXquIzQRGam{Kx#C4C08VascuHNIoTU|5WNYvvTLiaUO3ZJ zTgY)26z5~0ROm(#a>m}=q8uOxT8&(;#H48yo0>!9C#pP{MNuO7RE zJtiZXbPgSm0GVE(N}q=K?Ab6=(gOf+aX@*It=ESA6)q!MbDS#Q7MsW>vWlmoo$N`l zILBdf00#$@ISZQ#@Kx{0hze7ox;zw)MPIU=DTQ(?Zc&9UXBFltI`$)^DvmACTLH%g zEOt*jW~P5-mv)#fKKv2HV6_amdoR$7eQaeE`J^NqvF+u}u=AUM?A2OgX;s1jVil_I?B>eL%Cvbr)C?xzZrR`J^lE;z3+Q4jF1? zm02wj-Vi{(`RJKDUhdWvH=;N*3`)> zz%6HA3w*MR9AvotPx=D-*V5}Uks`)XW2p+H0jVxsnSv$`1hUcV@KNG*Z3S?1fVbGu zkY50b@{04YhrJ@=fT>vC`4-F_=wZ7VkWZaxyjxVX-^>{-vUKWx`duJ3t$#Gjnd<-r zpw8sfVo;csnX)+)EkiTeFp~H^U|Q+;bSi#p?W&;#m}W0ApI)}QPQvv>RoPE3-dc2I zDG+dgT&_#YH2@VDT;Mt3CAQ_s9aFzXa%g75jWFcWc~9Xb3&)Gxbnyi~YPvfB);|Zs z+>B%(^dxtoXJIJ&BRJAqUFT`Y2E9_O5Xyb*v<`6-z5nU5 z)#c%c+9R_Qb-<&j-}ME0nT;4|Zc3C|muTe3;45w-O=)piZEly3cNaeO2#qh$=j(x< z1H`(VL>hB=aou?SPyi;`Yv_Lhz0`{=m${H$*Q>Hick+;xjw{)wTpU+?H?cKeRs{Bv zu$ch)g$|p|U(s3849KqXc#P3fFjZ5jHqzZW(@kv5la+uoB(xB9osFeEfIMEBK8J_m z2(VGB-Jru4rMZcW{FHn}DcH+_Q3QM<`qTpM1`wLDWrO&5LiH994$|av){r*|U4E!2 zLA6;%69IJtHR5c*g?mu=Fc7}kKc8jDkCdfrcPTijH0HDB6#yF`+wGc2-hhWlzMuF$ zWPb-AgD=6S7Jf02yAEuK6Ye0l4&U3`a_COqd^8FL?p!^0+wKZKchoOShr;idIdu5# z5HSuKaQLNzY<-404LyTCVnI2EbnL zp(6WX2i*?P`?awIR)}WNK-(OQ5 zU$dz4y`qI+B6vwLCw*Ponv}RD8wUGMD|P&C0K9W05U!-&XTea02NdL+ZEc^hH8xqc z+K>%6D29Oo5G^On1tyN6z*xv_0PVVc3P{8rUJE9XudiD)AG1!0Eu}oEBGZBMHdU_V z$Mgzr-n&+Pu#eZ%U3MJY0@p-6+xx=1Hdde~%IMD?yn#jDK&Yp-u<|7N+4@vP0!Js# zkpLAb^hmsArQR|wuo_(km!etMh6Bq+*o@_xGI4bx$DdrHECpm)vAeuVRupdIMO%}c z86K^LeW1o`>$0_3T}8l8R>(ZrTp5rk1Zn&fepZ%Jm&2|iK&7>&sNU)=@PHz+OzIH| zWilZbC=0~aY)7Ic8Kjd6BBo5_No)~TDhn~75Xq!Mflt0)!)w*mslAFK9XpCI)rV50%+_E?DIJJy*v9bF!I7Rlw z@7*0Q$V^Bo7qw!RYs<6d+42F%!@bk0*CwUKZi(eVz36{(Iql9GYIsio_#75|8c1#I zU&KNT^#;-6P&8~o2x0&<2F$3Q-nqRk{D|NTAmP&wzQi5m*~K3qB0O6cvxZjd8mZ$>6*2MU;k`TxxhIR zx(QGYD)JAL%r|n(LCjsc@KocTv1nQ+19X||EhWXBd+WME4e%-|6TImzdQGOxT~gk$ zy=K9}4H-M)cqvh;SpD1Na+*2Fef?ZtfCj^PDEiy-pi2xS?q5!ClxTg_^&0`y7M#Qb z3`Pi=SfcH`RO&hkI535Qb_{$Tbe;j@`(F&gx2X3?e+d3&?`USkN9cur^#+$&mQ*2X z`PCsLGa}!HeKPhRTmm0xex{D%INt!5vbrfIZplTUm~%)}laMG(*~JB!_PIq%?CY)c zk^&mWw#{dyWD1f~%CqVkD$48X1b$kXd3b1nYRnB&b@1hTFa%rq>jr8T>oU5)0K4^k zxkjy1n^H}`R#vOr33^EQ84N)m6JUo-x{a>6NthQGs2$)CNqtQi^0m3D9HpKk(#Q=O zU;t{f3={fYMQN#4!Ps3OOpq3x5}}UHnNBWcz%QOdA%_@0l=XFS%Yjo{nocs4)4VQC z#aJ7z78c83C8_BjRTB(uExQ5JE^oeti8Ab@2-aT@H+O(b=cyAQ$eu2}d0FoGPp0mH7NcwSfG%dnS4Z z``oO;4u9qwRti5OIn~dvt*`Re)@M}Fo*XKAtI7kR2ffOIn8Cmiu1~A4q}C~pgTFKz z-Np{7PvET!0>74o7a(ww+laKuvS?JM+J=tIesndJgOW|n{p)E0?N z@3ZpiOI3vv?t8qHa_DWv6yQHAWoHt3aIVIV@q7;n;Q%Up` zZJj}#CjK|8Z@{>nhLI{52=icI031h!|M4~u8ve&y`z_yKJ5IRwaIOue9Deh{8$UEb z#@#?_K4oOVKq8?g!adtTo=sRotkI=u5;GFgg?m5**yV|DkF8BBmtEaMqGsaFysf>0 zA4wT{j&UlsLv_zc&S?6WxZ$jKw$wJ(c=v(*ph?@J^zrwl`_PkDNSI69Q+G#}%p%ds z$*eiYgnrNijy5%2E+(7N*R0Psl%<2UU}aqFeA(~KrIutD5SlUxO*K~Plh(fbT?O4G}UMN;<$RC%hl)VOaM1|QmeNXHrBKpX{FstS3sBx z1A}ouC~+Zt?`K>HFE@3b`n?cl;X-Ik{Cj62neqQx2-~PTEN1$jC4{`HKe#FYd<9)! z(G+|RYcq(H#Kv#f6oUwW9tS9(5k20!sWtqd-~>1bI!jubPaJK7B!EwnFmft<0gdJw zGg$Y!Q4oqjG2!E9&J6zHz!ciixqX;?TCM)JF}$;Im72;k3gA zFnKidVE;~P0ShH(Gx`k0YLEgV(zmRhwdr!w!SDx{8vG?S^<@>VX3$7p-PHHa%oQtU zazRXCQuU&kEcOfQLYIQs1$NobuniKr$7p&K}4(G4>od-cff|R>V%)lZ9)| zCa|qO>~z;je{21bsvdUbKA*GCN)C)EVx^o_w}EbQe|=L=PgC3uF4z#{O5J1&a&#?ybR#JHkG-mkFFSNyO zQ581=;OPf}R2qDqrLe?qRA_c%AgE=)ci_@bKHqx_+~IsP@AgaF&0t$r?4G0qS(0RF znStH@mzIXhfV_8nIASE@1-U1lHL4iO02?+Xo6a5ENlb9Aa*h0Uj zHsV}eOvSPmg{*&f;i>gEZ=61T?RLni1@s2+@3Bn-EI8$l;oXqw{ZGRi3cUZ5%js}! zp&p$IhP8KNuF~qPJ#+krRGf5-i=^6IeX)(ce&|6Xp5~(DV5l0&4f&z9p9OC z<@VjGeZ9QieN`vGMQ~8sn_4d{7dgYdB=i2|UVrP6F(0fxHif$#giGR*QqpA^S?k?7 z?0wg}8_xpre0TVoI9VK@&r3;3ldTZ^hW`PM>HYYY-`$y#5gWF2M*PIVlwr2M`tX%~ zJFBt|B{@Cpx6h_Er{5G@RNVsKfFE5SR-dUkQ`d6s#Ne`!4^BKs&G!Yv#ybmck7j;O zB||Ce6>38`16>^05VRULp|=UVunojJhZ8kEkmgIr4t#f2IQcZPXkszsVf=f4$r4$3i;bw%eiZ4 zjpg4ZmV*k*Uj>#~n^$HJsw;=YmE-ehO=bAJDO0CSR1D2y`%OmqXClhKODO+YK)Ll- z@#Np7lm953qy>||$s~tFlC(II9HtzUM9v!$MD7^&Lx4Wu!DAVLoIrEnr^AiIe+t^k z7|w`iTqITz*U6pa&yR0?;`JxGMywriYh>EUkDlD|BpPKM_2{YBp7K0B;pv=b7Chq) zo*8_RDSLLsvnN?ASSD89bGf6(kDfWYVf2a7H`y%q6m~xQFB~2xfz!bGY>2J5P+#~0 zsEPeAuuzqhaYpaff>a>S$<*=DQv>VR;te|eCN(Lgti%bpLTHU&lAaWv#fg_h>1SZZ z!!N9|St>1F9(;;g?><=NJyk%j8&h-fdroc-bW<<0TxJ_)xW|E;--8yFtg6KANCKpK zsZ5+4CCpGMv$K?11;G8)tSXc_RWwS@l1Q@n<)Yeia5Q`k?tsI1m*7)1*T4a?j_*&& zl*+QWKvt;oDZDD12FSsl*!i>23qnY;We+#OxiUcJFz9XR9H7aK({EK9aur6oiSBNi zUijm|U|4lC_XGMYM+AJFm7S3qE0)RuN2@I?#2~f!81FcY3SwTiloga0k7-HwM{`$$ zHS1qSGcLkZwlRN;Dm!O}lp`e$=DPGi2=o{j7+y!;vu`qb;am3du1lvrJJ{C>NVi=j zR_YVA$-HnhH;8#(5o(mH$HWv%8@b(}s_gP-^jeUrh2oXb>M-@SK=}Pntj!_OSvvr^ zF`@J7{pL@Oo#fTlwU_S2u-~m!8cc>94Ns>q>41h5xaF1AWxlGO-OcOKYiK;0fTq52 zWb^0T8{laDsau0;4 zZKMa4NQn~$x7r)_6Y{WQBNL+)Qp7`Z()e3dq!cE4h@BF<-(6VZa`WKpaM49H*CsBI z(t^cQwPB?JUsL5FmKAEO{8O*MA~u{4w;noCSJ7F_p}$WZ^=Vx&fLwS44%_zaXy&)t z=U_8^W`Ed+@QGGsb5=P|SRr(7E5BM&>ujhYnV;8Gx|`a^e7W=xJ<_QN2dDuDXc~~^ z@O6TJ3{Z@`a^WS`dC-yL)9#b_!@(934SRPb8Wox4uI2)#bAQGAu5N3E>mbQIeG`_j ztmRHCw(I+?3GZ$cghvQ?3BsMaY4p)@&b+c-%%9-57}lLVI+}U=19*m2*5|VK0uoMO zptA#{UE^`NFhS&0f<{GeYF~1bq6UzCT`lcpa(6b5*)5bS#2T~Os^XdH1#}~+QR$^z zK2R1Wc7z`nxi+|9C;XaSgj$JYM9^zcsxoRa4upHK>RuqcL#<_Dr%pms(6pJywmiCU zuI~5=-i7n+_rXo_qYcMrah2Ju&YIYbixVe?uj0jSjp0WCa#wQ8(Hpf74_xK#J=Rgz zN#Bc6;S=wtp7jNTkKx)|qnRRV4-8~&S*y}uAgb2di;5fIs7Cl0ullpH_YcBd1`B(u zDo(#zPfCcRCYupt14XW09vY73u(cgx53RX+4$VR#=(VNo5$7*;HGFf4rwTR6Kqkp_ zrI(2P+zxPP-=XXD=FJ>M1=rG+WWgIuS)F2KhO-h|G*ND?N_mzRC*(jRI2|_cajNY6wMQJn|F)))IgPzqY zH)?Uv?eGwx1)?HQ16*dGwG1+-d2A>d=nX1mz?Uh|3Rwl#vp5F(r--|$Z)hRi@WB4@ zR1B*X?hMLiXr*es5NLriKijgqXpc1s-(>>Yg2E6Vy$Oe*VerlG-|zbIQ=X)F+Vl-6 zb20M?Tzw0&;E4V3$vYqL_8&M~a{+t?4sLOvVYJm%UTT_8gsl!EVg9E$gpN^@SQQL< zWLI9E%UUG@GN6e=FUBKw`b5DSx>Qw|LK%^Z?q(?_IiTXVSb4yxMQfc1%U`a`QQ+yddVByj%dd%-g11G&w5>dT?x*ycu8vSeZIA zVr^u|&g5-?OcT1xn_A%L+8ey;OD7KW83)TxH}z~q01gh(g+TZV3}7t@NtWVJ+8En% z#GUUhY~a-tz}L!tx&uS559Wp zW8Se3PPbhjQYq5K1v{2Yg~Px=_+0-ptif)Uj*ErhU%DBz67X^GbN%gOUtc{A9~(TT zJqIyBpSYAMacSjDK7ysOjK0mvXqyc zqE|%Fo-*og0~D19fQ!_M%Yn_*c-E(k=>v1J#wTu$1RSN-W;f@V%@$q(z1?Ib%fuzw z*-~+4LUVc-_Y-jCulwMdYw$W71~9A*L1-AG7EWuudJK>*yFq8nH5m=O9F55UbhzwG z%PYL4<*l(bJGeVQbXMH1lxSgC%IoA5#$d^ZZLP4WE`ZAYJ`hg8MmVl3)_@G$(z6x2 z(Gvsn+2Zv&{b16VJj5Ei!3>&!GvDE8ISjY3{rW1?KJX#9SkhVF*IIiNoFuwp^3N6xsN*`|!4?07#QL7t-76rr^I7?c%Yjs9Ogpd;}S)pD8$V~!AWl>SD{~^!S zWp8w}HJj>lonUWXjlM{2G30CThe=EdLzd6Lz653Bf|ywv{nQ+e5+vou=U#wvwza&d z02>faYgVjR;H87fK2ZK0wx% zl-Ada%F;5^W$78bsK`Ab(mnDx_FKc`J`3&_b_t#h27u6;Cm-O=7O_3yWa4J7iD;Wn{-!Hxw!ebl9+P~ zO~tu(Kr+93^u-5vJVu}1$LnJ-e?hm=BUT>B&&|&@=Q@lY!%vB=Y4{DdY}m8l?Oko> zxS-Nn;_C$SmDYo5 zvazhJnR^J-#X9Db9tLxq5AuTK46R(7BL_O5&KFtmYYX|ZeCgQ5J0sppDvRjY!rL2K z5)V?z-6=`o+|3|)pY+S$F6i{F7H~t(0H@DL3#nskymExjqYx9k630 z*A6GUn%Ykvx_jwNGe&YQr6R|u$dU3kqdkfpx@4f_WRys&xd%aW^{J14#aiFstkdBV zch18KHw#NdhbBW4`*ulVaZ5vEEyi%&QMBI zRFzjCpmiwXR;s@V=iXzm7kUHxL;GK2$qFO_i8=#t)Ie#@vTgT76h`6bi$j~yE|k8a zc3JOE-oeo8=^ulK;F|Y#=K;8$?K$Rgo-e?V&?_aJxh_)yXf%4%Kn$|8dJEwI{G}lP9-tPn z-e%N%pGSvq9>-=h8@L!C59@``rnDUI|4aO2wW76arjT(+7MH>&a zWL6ordk<)=Is3W7#@?|;Dy4m|FLcuWH1i(92SNAf%|2Bx#qz-|z5sAD5b_~|B}md~ z)hdZZrq%!wgMFLB?6!G%z-+eV7n1ozUj9RP)0jU&Bs4}FF}y#FQwPI)tx>8M?nKMj z(hd4#AS7cw!aDr5I*zq zXyzO$o{DF+W2}+MkY{TQSpd7;oLNXRZ`-qyEXiYEdUyG&TimIqR`cu{m%Kz&Dk_%Q zw7olA86bjOv}wcQIcu(d$pwXZg?Tn%K05&kFtV{#6ghl2^V~UAnjT5DzMeiM{_)2! z=zQkhX^(i*9%+g(Wjfoj_Y$`i)GNva<@~~g{FQ_F^`;GNGLX*ZSH4b+H$j7#R1pk*Yf1@H! zw^7HD6K%NQ*bP>bMT0Y1i!&-A7QM(8FV!UgF&S4XYQ}is@DWJBEve(B%Rx3qh$*Gw zI&Lqh@Ll?vq{*m{`m#Bo|4F)I)G{K`{{%Yv6Cf_1+}mmEd|09}JNoOf-xh#zvdUN^chDJM9fL zV`Z0~uvw2gaF7Gcdvs2kTKs|gVw5EIQL}N+`1xR988wkrlvjwYz85$o#Zw&1o#=J2 zflSNS*|>i2`A^@$7n}R4&VyF6A)`7aOQy)?0;yG5Ds?F>TA&7DD^cLmcaxLYI{1SA zkm82$JCILrx9W1WMzLYDIz~STnf6gXEH6V1<2 zwAh|m!86wFQnl=HtsAMD^nlrAI)s_V4&<{g%cnWRYF1GMJPGF>eEsXkv3j zK+Q=hmR8}K-PL&bhQ-FFgSCQs`al2`a6b?})<2qc(quJ)ETAze^;ssJiJlv$W212c zrl1@m^LENH_&S^im%wRPcJ#f+T?V#AEk%zVf*Wns-Eg77!rrcl)4!)BVKgdZbyg>C zT^Tw)WGyc?CL$ZN(qvgt#i_clJ8tm0Zg;osr+MEEv9EuGFW?t09gu6Kj3b639j*V= z@)a3q{lIYc9%@2vG1yn^I%2`msKIsKBJ^!I^;)h4jWU5zKi%URD&9U23 zJKLZ)=uO77#EfhuAoT`|#nuR)*$ZFd*{UpVds}`1yTFrY!=J$%Z7}D6oLqG-hdCuD zJ>8T(7QM!(`_bL*tM|9nmF&aG2)TY93;O)Qt2-#@$ZYMUC-SFHVfjT zBXYXVR7T2Ui4xOYL{yn>R(5=p!8;Qo$_v#NM7xaFzUU@yS=lFJAW+ z7i=kuzOWbtM=f6lri1jt6gR(dz>*HUKumLKaG6$kznHbb2dX;)B^e)QGBpo`=wNGq6I!f@3Q#R)2IJl8-LIF@x%% z(Mvu?0Vo)e=vg%Wr8A2ja`%B2=b^>|6I;4_`>M4Ym#o{K@s5Oq`}?0~ooU@MXFh*& zN-8fSBT9lv;hNZk4{y}I-`T~h^w+zZ26c6~*?joBe5j_OsnL!a?l&h4%50z=0U z`dPk!1JA(*x0JCX+fi;WC@u8!@(c5=bRT8Imnctx8`oe9r@&-30u#v1<-Q}ECN=@B zNoC^5h~xPcd2S^Ta)92XHi!{-K*d(ZW~<-P4Juw{_+Tu)u^H5Rtb08@$H6hOonN1r znk7u<0*O`Sl@!aZ8Vt}fGSj!k55A)0l=NgUQ$@YhKb)mXRH)K%Gm%(Qib>|8l9&uz z*4S+zEmgRHtYtVFJZ?WI0hPKVStL`XuJRh3WA}r`*5ZrguN4AZ4usRu5?0)|%Cq1r z07ursmwRAf!`+77^OqEEHhK;{5xO$+rHnPIwO}Dw;9OL`yg0(0+_Li5UHP}p22k6f zp7jO;K1rd6BgQJ+1`e2xk zQSro`5f%24BmaB@{kj_E&Pe+GL2EO2&KjRL`;GiCdN2Q_@F_1(o%Yth8;dmW_dWf$|7BPIzZ#76$EU45 zH~6GAdWWALh?M&4bJl))%G%H~)`EvIe;#&0XYXgoy#(bK;uCTudGPVMkGr1O`oxhDOGk8%TsHE|lTSPu_9Qhbebn`* zmOo{A>g>}Kp00c*_!;LjXM-bydzf3FC7<2%>|aae)JumxRg^W1)=1Ch@Nv4s!%P~kjxN1 zb(5fXW&Ci_UMTRvO_($;^Rsdo(Lh?Z9X^2sR0TVYf%pU6F_V?Dof-}whWm+-g3KaN z1zd&xvLo)jY?#Gpn(vImd?H(+jyD;AB3EuA`S3O|V1z2x7cl2rlry;M9(kO4fV(Ul z5lCfHku3DOfYE7k>VN>KOd1V;1=`GB0@n%;0zi)oEq2=d`JOy>B{B<$3ZvC%)tEu| zt0j?eB-+mwZGyZ?#Fl=+fEMAd*DA1c=mXc56rh z)K?O*7Nr}slF&zh0-M8OCz-b^$}61}W1CCTH}Q~x0I>>bLJq!ISxH2j)lLjuVFB@A z>(RN~^&l)QHiTZQkzb@Z_1Fk61X5FB04p{!Lmmal8JjKDF4AkAI;L*!j_4`9zD+rLNx%cc3mdT7oiC zVg-urdhBYmpIB!VI)ERP`xX)U!-_P&|JnEoo;FQ4rdDKs=0V@GE$(4(A_?7ql#C(Uk zh(6c6jsVx(?&}u(ttfAB*%15Sl=5f?5R&3w&+?Zb5QiOV_OU-JNj%9M+>Br}l@ zZxV1m9DWl9b&K}J*Yo1*65Pw&Br_S3O`ZF0jro4^ar8EK9eTj3V=xoH@7sbNdo61F zyl_cL7mvyt-r{!c0xE@tn3G;a zl8^pdJ7E4~WIfOJ<$$Zboy^WZ||AA;N=j0$f^p=*-|b`D0lX)Dy?x zib~8hCc)Wskjvm_3RaKHZ#iQ-Q^>9$!psU6J$mIDN)iwk4R#%U=zBF0(Uan#A58Js z-0|oY9Fpzpr&vI*mM9g%%xqN_Ah+^QK_+BXpFGi6FNi4~3`;-F z_@M{R3hZA`$7VX8anVphFENSa@%$(hh}N>vNGQuS8|(mZ*k_`HE%;#< zwWN!Fpp%6D=r}&Z2TEl7H4wvFo{px(0Q}LQWBk@%cN+3|Ks$2>9WB7SKu40khMvI9imiaqCO3*1Z$d852YTK zUjyHeaL+mT7#zv%1)bu~n9k^m#O8&hA1cxr@_3a>L{C{N$Z~{K?kw7g4ZIV*iYB87 z6a^=u32@KVlO?T3c@5>|zV1G{NTJBG>`DQQR2-$AIF5_eG3@tQaMEbzihn3p4!T$k zmy`d4;nakcTSQqtWQ;w2+O7sTFN9I-2Fz;QCfLqn=*6dxo`VN3u8qM1$1Q z>}GL;wlU{22`vo$Jy~y3TjJg@-)4H|&+JKP0-EsQ>+tCh4m5mzo`>9UA?S{!`AqgKJ3T1vX^+OXb zDIa0eJK*Bc%)GB3u|POqxWR<01Rq`|U^09eH<3Ls3XO-)ASn->U@*t=iF0}{Jw*YR zl35k33ZHW?_Zm2u*tEQQYw=<*8@wT$nY240Y-i>wK<-w!y6K~5xGg>31$Wj59EZHX ztMucY9uOcxr3^FR#!_ENEX!9q!Fdv1{J3id97P;;mp7Ld>6BcMW7O%@8d;7CsLA9i zK~t;W-+D4+-)!!CV4EO4JS$!o1!j^P!v`e@erli@-_bpMNAu_c84BI-7z>WgYchA0 zeo)_a8r&u!`NjoY_|Q!Tvzt#`(HBeUfi$>EuT=5V{*IXzCKkNw0u4vn3jYZOY! zhgXz18$W6cN5i;ajWQ-9Qy@&#Ed}JS$c2JUgS8oBmr2y8I6DV!Fqp1?s>|Ets&{b^ z$MdNViFOzrl*UMYPnZ^$8Wy`*x)6}7X>53b1Fe&qt|M;aY5AZzZv= zKwpjz7`&A(P9NuNYSF#AbOm9#EdOVTTl30{kfIG_6m1}3O+!yw31n*Kx4IdXf^dU3s?)>W~x$`&sYv**TUr!uX%o=PF!p;GP}z2l2buKH59iH7dbLe?75>r{ zaEP}437m^>!ufp0x|w@+ui8weA40c@Rh@e-b1#DSx_uw=i`c>#sXQByX{wTT9z62J z;K&R*p>M(|!Ci0)?wdS%?o2eD)!2_+8oLJjaWJcO+AtM%j<%ABw75O2oO4(<95gU0IlO9G^W`J#+1ew&I8LY~wkh6|>RUB9 z&%qCm^ul_7zt_$r!##t4xkCTtQ$BG~Un;|Yp_6-uOtFj(tWW*K;z9|nNPrT02%h|Was|b$3_kE1 zMH0cU6s%5nWx;vd85>5A;rX~!c9L)ag$anh9H)|=X4Qh>RAOSbDs60(%y*CnKSLn` zVxP89LsKdXF}-iwNAy0b=R_YJ3Mjmu`f1RWa4z=ci$lJ2(Z1X*U>qEJPYm3)$}$s0 z3Y&uqEM}Y4;qVj`0S8%^UYQij=f{Pdi29Iw862*zIpA$5Yy&5;qZjorV?`ujM>iyP zcQ!Y5cE;0=ru)z!HsxbGLMwcn1>RMuX3|`w-%rf2svO`JNmUZ?shmS$C1?a$%P_&P zpnp-^brnRol`;2wZeaUwQR@f@cr@U z#Mi+MaHYJnwY#nA7WkYT8t8-V*uRaw&#?kVYfh0CWCEokHu)V{v^HCrpx$S6X5SEA z*3|$z@Hi}OW^6@;fY_Upm+M_=6|q;Kg@SXMGM(2@%t^bVY5*>LSz%29zKky*stg7C z>XmTPz!U6B27Csd{SKWCs$jq=)GMCW!on&GXRsL220utwvnaZkY!on>jUF+G9kgkz zM40faO%wB^UeNxV|LG}g6EJSzqUYiB7?w~e=U8gB(P+#yU_zv`dw8&zxVP{y8ij%u zhAxV#*schncV!iACYVTZtqd3k4Y+2UsWFc2Mf3qEvQ0;gLpoNM^m+a>RU6QI4h^B5W$>YPjV#kor> ziU5_jWbe_-$B%!yOY=)>x%VTa&Y$8|WVtQBUfr|`c-H>y<@C53b#_gLr{NtdlX4C4HJovaecW{3C;_RyBv&JtiO<#jFJsM5Lb;~z{ zCeYM&yz_M3`pxy5x9rT{;oelWJ9}#hsK8d7i?6Ik&kg^kZv#teHZ||uwv~$hta;at%{!hv(&UNP76vJm<>|G)k&?Lqts#6D zZ^ReBy#rkdsLrOM1ntt~$_f|0w5rvbR#(}GiR#}snh9Ki*qE>u)ZePC2~n9EgE2H}AsX&@twg8aY3` zG%Y=L=3_ffv@~}B>T3I|=vmK^_uACt#qDQf|L)IaWi8$*E%1$&h(BlHB42Y`&f~CV zxuASa+3Mx$W9qHJ>Lajg#le~;9N4V2Y0Js=b!Z*72^+ybxvj_6v{W?|9U3uMwW;r` z1HF%|ZeCN5uiW3b$U&ciwM%s!>Gu;>Pz;k9s7259{cjE({KQQkAtt=UGqOm`qxEAhhL!zte4XFxOXi$ zFn#-rKz$0Rj^)o4#4lawE{spbLv7{z-c>L<0^a>35)SvCw!?PI2^bxPmRB#Rx4&L> ztor2gn683f%mh=YSqm4=a(KYv#?%9g4(4qu1XM<$JM)dpnO$gZ`riM*XYNk@RE=nl zbv5K}P&R6_*YJ*eb!atpHxiy#Df=i(O4ZgAvG)d9FE=z^bbQdEmVbL4mg9d)m+yst zIRydU|D;i`jg0hW-+S4v#*|Di9y>>UY)pds7(kCJ>iDnJDCmSg_^&(gDfs;fpQsi` z4k)h4D}M(*|J%>ta|bAOg?hw(ZTD=IQ*9M_^E_{E-MJ#Rv}45$a1&hJbZPU(`c2z6 zY!AeG(Viz04-C5GGi~)rIPi&RFHA>|mUk^}^(zZw)eBaTT3Mcc5Q9!>dG~hpn}S2EAH&vyXVlQR}QI< zIwpWwZ>DFYrj{kHVbKHUCG|@SShS)tu^N?MgUZKoV~+U#W$JB)Pe*tQ@goOsS*W_B z_E>g)*t+WiS{|iZ)WrLTqrSFi0bSmN+#pC@e=0-%UDhF^tb4MdzN*}nl{{`vY(NonJ0dRW3;%EM({+~>WK@gTi|ev_kT;QiFvbkr_{d=Vy1vOOS4=#8RZLV>Asr;yR6W0(yltLTK=%B z<62wu%5wBvzNQ*InOCk^308q+Tgn=1g6szV@NVQm98;wH-gUJ+`vc3xhKirYemlsz zaAj4pW0Yn$2k$+;AI%isS09CTWQMV73|^exgp=XN_L(J~@`<6G<1qMe5Aq z!)GoYTrk=J5?6Y%7gEtTha*#l5ffT-zd=z1$9+E!X#aa^(*npZ^np(G(mX2cuM{`uEH* z^=Z|1V-$>Vbb_{xd$%uANB+Z0>a+P2Y=_tFYs=TJu3fWgbxBPbpr(7SKn7Bc2j1PY zqteq5+f=Z15_lObUXxS109$!Ej@$xidy*?{!TiJNXU=xMbNYISQ{_4BOO>Z`TXunTvr zpEn)Zaj?DP;Eq$^A~;)iqHura(Y%%y&QUPO`s-z#3->=ysSb6S{nG{8O2O+OAuoGc z1vSh2l0AM`eg`-W&bGCE(5$_Ew(nldKGbC_;td-K*CQ&u2Bs`bnV2)X_$NT7)Rg~5 z4UU2KTWAtVf{8D{5vtvB{eHR~B&-}=wYV~W*>Vq{=9XN6!(!o^Rybnk<+Ja$Ojn=B zvGviYYisMmFLS_Qk?>zI@;0gwQH9nm>+9FAuiLwI&*p7_+S5>+7<=Dt1q?uz$CUS)7F!R-c&9^41Uw9%iuAf+hP}v=Ke3{ED0Q2LRO$ z=soP&v8N}VNWGmv?X%82>~33fD(~v@uK;`+K*#oP_Wg3#$=0@C9`(DS`~XIJnU+Ct z9UQ9u82r)jBu$>< zI8*__DWLn|q}^CXnOsoPPD(yO{9P+Rl5M)sgHoUziSAA`ZBsZ}Yb|a){?v~}hH*-$ z@i<|v;4<(rKBxFKgudGX*P-va7WHzph6ER?RU8-C-6&h2aYz`eUjGcv*Jbo$*?)}X zwNG6JRg~*K=c|-o0or+mce1Fv@uy#j-S@{z68t@Y>Z(;fSc5)$5PUV#YNGd{-$pn? zmzlcHUn6{dpg^RSZX+<<5m#03JBdf?^B?Q|r{!^+jrZGzc3!^*SCa3x7hk@=ER?4w ztU|quj49B6nn465P0!t_y8yqz1ShScegiQkY&@u{M3Rp94C>X4M8-08Nn~0=-0-*oRyyLa=Y?VT?i$N z#Q8#UCI!jz{d{+2VnMMx%jFIN--9>Nxdp2&v+B909mL>x;%MC6G)kq-ex%!6Mz@e{}# zYEmGiA@W3?$oG#l>_dge)qc-4$jwN6Ag88Inm%>P+z~!deP6x{$rGE`gK@V*P$*K@YD3m_2qu4xn25QBm=IJLH>w=y8DkMDWEG` z5C2kBFSh%f$^DYYeTk1{`a5>N)Ex(P_e*??wTQIRxA$dG%OnxET=ZS%?>(Fs@V-Rf zdw5^sRtj8C?@Pw)eTglgFYimOetu8f;ACi9pYodaMZWKIeh1p#94v9d_wKjzWnW3; zA2c$0grStfgCkicI3hSAI3hR-4M$9vaKsQC5gZX55gdhtBZ&(SjwFuYh~S9eh~OwB z9En1Ba3l%@M+8R%M+8S9;Yg6egCjvAI3hSAI3hR-2}isV9vtxs!4bg`!4bhxXgCVf zRyI$zvI&j|jtGuI!x6`a2S*%Fa71uKa71tv5{_6pJUC)$f+K<>f+K>XkZ{Cs{S14n zamf4z2}gKCctdzYc=K0z6CCqaHpaY_`xo<;W8zYZb8}rDbSTE9C1+%~+-WJfHioC; z(z9%gz{M377kFGKFV~gs34C#9Wn_A~L*~Z0T^U(L9#n2xaP(aIpu`@_&ibPb>rs>OG3G4G@ZSw*S^9yT6(u3$ z@Zz`(J!#>^(R~A>D2TJcywpjdvlQ3Qf2~cwPGhrQhXEer>-@~tb<6t0m7AiA8#o)x zOMO)7`9b{b=B&TpbUEWl)#gvFEJ6ExXwG8nutE?9A11iCUjev6S_QFj`9i7t48R}1 zz30Rz^om)%^MWypzZ)?tun)#8R-h51dU_bl2FH}|5k4H(vk%1j4W>^64hLraMs7+$ zhSuZ94EQkdNZ|>N2#yGj2#!L*kt~J@N3uw8L~ulKL~s-ejwCruIFe+7BZ4D>BZ8xl za72d-M>N3^!4bg`!BHqU61gzpNaP5P2#yGj2#!L*ksyQ#M}k0bL~ulKL~s-ej`(nG zW%Fb!o8XAxh~OwB9C1pRaKtGDM+8R%M+8Tq;D`;^>WC$)BZ4D>BZ8xlaKteEe7nWR zA+t9&LwG}YLwG}Y)6eBkH*ON#1!={pF1K^o_{j;=oUddS6nT7W8K?N7Ko3V!exVY# zE8T|Qeo}07;Lj-v0w*}roxVJt=VqCu8Hg8-q=P-mIvjqO19P)xD{&l>Bj@EpRaL6#N7 zUg~VBAI(XuF%RFucn<-|8tcsPtVo;mCvmd*9@x*dXPzu7j3H0tWl=Ka;djXlx{_F# zHC!j5foN=p#0rc_SBzq82h9sK!mRXYy&>$DgvWn3T7)CL+gGNKfl*e!!Z)_Wb6lkoUtcZfKy)3WrvQbww%X8-P zjAM&oXh|@QOOBCflPqT{4=o@}V^x-U*=Sb^R-m!Y$R-(cd5UQaDuQCN4URL8UnGm) z_cP?7A#JLQgx`8K)LFtah@pO{gU#g$CR?Lro;9(K;|19)YqB*o?};Y;i414rDZ}%o zaU@Env5(4=P5MJNB%A6d(yU2V5{&KT7{+9$iXfQ!h^1L0|BzY~Q`=B^#&$5YNSpeI z=OkV<$+9L!a3W{!OHNXZ_h1x;;moqUsV{kjHL(dTU}&?fVj9y7Z5l^1E1LC(COy*_ zloY;~^2~DzCzNc|MX@^IXBvra6E&&Y^go zmKgIK%9_|I3c)(?xRbMTU2e37amLNcDs|z7i8F3yL4n7q{Wz^NZc2W7ffFxvX5yt! Yktf;h(bh0%MIv&tZRpTR@sn-;2LzQ1xc~qF diff --git a/bash-20060316/doc/article.ps b/bash-20060316/doc/article.ps deleted file mode 100644 index 3aadf2f30..000000000 --- a/bash-20060316/doc/article.ps +++ /dev/null @@ -1,1418 +0,0 @@ -%!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 deleted file mode 100644 index 875a04e64..000000000 --- a/bash-20060316/doc/article.pt.ps +++ /dev/null @@ -1,1331 +0,0 @@ -%!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 deleted file mode 100644 index c19ff9248..000000000 --- a/bash-20060316/doc/article.txt +++ /dev/null @@ -1,1111 +0,0 @@ - - - - - - - - - - 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 deleted file mode 100644 index a760983ee..000000000 --- a/bash-20060316/doc/bash.0 +++ /dev/null @@ -1,4885 +0,0 @@ - -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 deleted file mode 100644 index baab3772c..000000000 --- a/bash-20060316/doc/bash.1 +++ /dev/null @@ -1,8887 +0,0 @@ -\" -.\" 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.html b/bash-20060316/doc/bash.html deleted file mode 100644 index fad585203..000000000 --- a/bash-20060316/doc/bash.html +++ /dev/null @@ -1,11544 +0,0 @@ - -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 deleted file mode 100644 index cada2fbf29b105d531d520d8d7fac731d4e7c00e..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 657635 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�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 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 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 z 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 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 deleted file mode 100644 index fca398312..000000000 --- a/bash-20060316/doc/bashbug.0 +++ /dev/null @@ -1,66 +0,0 @@ - - - -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 deleted file mode 100644 index 971e4c4c0..000000000 --- a/bash-20060316/doc/bashbug.1 +++ /dev/null @@ -1,41 +0,0 @@ -.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 deleted file mode 100644 index 6cfe8c5d6..000000000 --- a/bash-20060316/doc/bashbug.ps +++ /dev/null @@ -1,251 +0,0 @@ -%!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 deleted file mode 120000 index 0cf709798..000000000 --- a/bash-20060316/doc/bashman.html +++ /dev/null @@ -1 +0,0 @@ -bash.html \ No newline at end of file diff --git a/bash-20060316/doc/bashref.aux b/bash-20060316/doc/bashref.aux deleted file mode 100644 index b04fbcf3e..000000000 --- a/bash-20060316/doc/bashref.aux +++ /dev/null @@ -1,369 +0,0 @@ -@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 deleted file mode 100644 index f551e6f4f..000000000 --- a/bash-20060316/doc/bashref.bt +++ /dev/null @@ -1,56 +0,0 @@ -\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 deleted file mode 100644 index 31487e837..000000000 --- a/bash-20060316/doc/bashref.bts +++ /dev/null @@ -1,76 +0,0 @@ -\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 deleted file mode 100644 index 83484e2f1..000000000 --- a/bash-20060316/doc/bashref.cp +++ /dev/null @@ -1,118 +0,0 @@ -\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 deleted file mode 100644 index 1a1e0a971..000000000 --- a/bash-20060316/doc/bashref.cps +++ /dev/null @@ -1,136 +0,0 @@ -\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 deleted file mode 100644 index 21f808438cc76260655fb16dab20fadbcca44e9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 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 deleted file mode 100755 index ed22a08c9..000000000 --- a/bash-20060316/support/xenix-link.sh +++ /dev/null @@ -1,84 +0,0 @@ -: -# 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 deleted file mode 100644 index cc6ae60f6..000000000 --- a/bash-20060316/support/zecho.c +++ /dev/null @@ -1,42 +0,0 @@ -/* 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 deleted file mode 100644 index 8bf154852..000000000 --- a/bash-20060316/syntax.h +++ /dev/null @@ -1,102 +0,0 @@ -/* 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 deleted file mode 100644 index f01929f70..000000000 --- a/bash-20060316/test.c +++ /dev/null @@ -1,825 +0,0 @@ -/* 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 deleted file mode 100644 index 2ae5fc9da..000000000 --- a/bash-20060316/test.h +++ /dev/null @@ -1,38 +0,0 @@ -/* 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 deleted file mode 100644 index e69de29bb..000000000 diff --git a/bash-20060316/tests/README b/bash-20060316/tests/README deleted file mode 100644 index a1a081bec..000000000 --- a/bash-20060316/tests/README +++ /dev/null @@ -1 +0,0 @@ -Type `sh run-all'. diff --git a/bash-20060316/tests/RUN-ONE-TEST b/bash-20060316/tests/RUN-ONE-TEST deleted file mode 100755 index 3efcf32d6..000000000 --- a/bash-20060316/tests/RUN-ONE-TEST +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100755 index 75fe59471..000000000 --- a/bash-20060316/tests/RUN-TEST-SCRIPT +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 53111beb5..000000000 --- a/bash-20060316/tests/alias.right +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 9cfec16bb..000000000 --- a/bash-20060316/tests/alias.tests +++ /dev/null @@ -1,37 +0,0 @@ -# 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 deleted file mode 100644 index 1e2433323..000000000 --- a/bash-20060316/tests/appendop.right +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index 7b61f3f15..000000000 --- a/bash-20060316/tests/appendop.tests +++ /dev/null @@ -1,83 +0,0 @@ -# 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 deleted file mode 100644 index 44941103f..000000000 --- a/bash-20060316/tests/arith-for.right +++ /dev/null @@ -1,74 +0,0 @@ -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 deleted file mode 100644 index 585aa5133..000000000 --- a/bash-20060316/tests/arith-for.tests +++ /dev/null @@ -1,94 +0,0 @@ -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 deleted file mode 100644 index 1365786f6..000000000 --- a/bash-20060316/tests/arith.right +++ /dev/null @@ -1,203 +0,0 @@ -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 deleted file mode 100644 index 33622e76b..000000000 --- a/bash-20060316/tests/arith.tests +++ /dev/null @@ -1,284 +0,0 @@ -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 deleted file mode 100644 index 43cae806c..000000000 --- a/bash-20060316/tests/arith1.sub +++ /dev/null @@ -1,38 +0,0 @@ -# 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 deleted file mode 100644 index 7eac9523d..000000000 --- a/bash-20060316/tests/arith2.sub +++ /dev/null @@ -1,45 +0,0 @@ -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 deleted file mode 100755 index 80f039d2c..000000000 --- a/bash-20060316/tests/array-at-star +++ /dev/null @@ -1,120 +0,0 @@ -# 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 deleted file mode 100644 index 900e43e3b..000000000 --- a/bash-20060316/tests/array.right +++ /dev/null @@ -1,201 +0,0 @@ - -./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 deleted file mode 100644 index b07b8e9c7..000000000 --- a/bash-20060316/tests/array.tests +++ /dev/null @@ -1,401 +0,0 @@ -# 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 deleted file mode 100644 index 86e933229..000000000 --- a/bash-20060316/tests/array1.sub +++ /dev/null @@ -1 +0,0 @@ -printf "%s\n" -a a=(a 'b c') diff --git a/bash-20060316/tests/array2.right b/bash-20060316/tests/array2.right deleted file mode 100644 index b5145c251..000000000 --- a/bash-20060316/tests/array2.right +++ /dev/null @@ -1,74 +0,0 @@ -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 deleted file mode 100644 index 0e6417d7a..000000000 --- a/bash-20060316/tests/array2.sub +++ /dev/null @@ -1 +0,0 @@ -declare -a ''=(a 'b c') diff --git a/bash-20060316/tests/array3.sub b/bash-20060316/tests/array3.sub deleted file mode 100644 index 579b42bdb..000000000 --- a/bash-20060316/tests/array3.sub +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100644 index 9d7e1afb0..000000000 --- a/bash-20060316/tests/array4.sub +++ /dev/null @@ -1,20 +0,0 @@ -# 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 deleted file mode 100644 index 3d7ef8e76..000000000 --- a/bash-20060316/tests/braces.right +++ /dev/null @@ -1,43 +0,0 @@ -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 deleted file mode 100644 index 3f57829f0..000000000 --- a/bash-20060316/tests/braces.tests +++ /dev/null @@ -1,70 +0,0 @@ -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 deleted file mode 100644 index 9266b5a71..000000000 --- a/bash-20060316/tests/builtins.right +++ /dev/null @@ -1,132 +0,0 @@ -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 deleted file mode 100644 index 3c286338a..000000000 --- a/bash-20060316/tests/builtins.tests +++ /dev/null @@ -1,250 +0,0 @@ -# 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 deleted file mode 100644 index 5b7971136..000000000 --- a/bash-20060316/tests/builtins1.sub +++ /dev/null @@ -1,14 +0,0 @@ -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 deleted file mode 100644 index e4cb32ae6..000000000 --- a/bash-20060316/tests/builtins2.sub +++ /dev/null @@ -1,10 +0,0 @@ -# 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 deleted file mode 100644 index 06f36a9a6..000000000 --- a/bash-20060316/tests/cond.right +++ /dev/null @@ -1,37 +0,0 @@ -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 deleted file mode 100755 index 3abfa9d75..000000000 --- a/bash-20060316/tests/cond.tests +++ /dev/null @@ -1,159 +0,0 @@ -# -# 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 deleted file mode 100644 index 5dd629d16..000000000 --- a/bash-20060316/tests/cprint.right +++ /dev/null @@ -1,72 +0,0 @@ -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 deleted file mode 100644 index 08ff1ebc0..000000000 --- a/bash-20060316/tests/cprint.tests +++ /dev/null @@ -1,67 +0,0 @@ -# -# 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 deleted file mode 100644 index 30e81507a..000000000 --- a/bash-20060316/tests/cracauer-testsuite/DOC +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index 103bb9399..000000000 --- a/bash-20060316/tests/cracauer-testsuite/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -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 deleted file mode 100644 index b856d08af..000000000 --- a/bash-20060316/tests/cracauer-testsuite/OBSERVATIONS +++ /dev/null @@ -1,84 +0,0 @@ -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 deleted file mode 100644 index a1620be7f..000000000 --- a/bash-20060316/tests/cracauer-testsuite/QUESTIONS +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index f2de71c92..000000000 --- a/bash-20060316/tests/cracauer-testsuite/catcher.c +++ /dev/null @@ -1,142 +0,0 @@ -#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 deleted file mode 100644 index b8e8a77a3..000000000 --- a/bash-20060316/tests/cracauer-testsuite/lib.csh +++ /dev/null @@ -1,7 +0,0 @@ -# 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 deleted file mode 100644 index 8e8756552..000000000 --- a/bash-20060316/tests/cracauer-testsuite/lib.sh +++ /dev/null @@ -1,14 +0,0 @@ -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 deleted file mode 100644 index bf50bc78e..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test01.csh +++ /dev/null @@ -1,12 +0,0 @@ -#!./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 deleted file mode 100644 index fabf8fb8b..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test01.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!./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 deleted file mode 100644 index a60d70ade..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test02.csh +++ /dev/null @@ -1,13 +0,0 @@ -#!./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 deleted file mode 100644 index 4c6f82d8a..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test02.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!./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 deleted file mode 100644 index 955d6dd58..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test03.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!./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 deleted file mode 100644 index 962aa7ab0..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test04.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!./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 deleted file mode 100644 index cbef1aeb6..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test05.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!./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 deleted file mode 100644 index ce1b91197..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test06.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!./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 deleted file mode 100644 index 9909e3258..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test07.csh +++ /dev/null @@ -1,19 +0,0 @@ -#!./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 deleted file mode 100644 index 2f87ce45b..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test07.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!./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 deleted file mode 100644 index 87bde69d0..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test08.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!./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 deleted file mode 100644 index d12cb53bb..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test09.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!./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 deleted file mode 100644 index a3bdc629e..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test10.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!./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 deleted file mode 100644 index b56d68ce8..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test11.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!./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 deleted file mode 100644 index b724eaec2..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test12.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!./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 deleted file mode 100644 index f4b8bb861..000000000 --- a/bash-20060316/tests/cracauer-testsuite/test13.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!./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 deleted file mode 100644 index eb7d3c3ac..000000000 --- a/bash-20060316/tests/dbg-support.right +++ /dev/null @@ -1,353 +0,0 @@ -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 deleted file mode 100644 index f68f8d9b3..000000000 --- a/bash-20060316/tests/dbg-support.sub +++ /dev/null @@ -1,26 +0,0 @@ -# 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 deleted file mode 100755 index 517591c2e..000000000 --- a/bash-20060316/tests/dbg-support.tests +++ /dev/null @@ -1,139 +0,0 @@ -#!../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 deleted file mode 100644 index c9d884e65..000000000 --- a/bash-20060316/tests/dbg-support2.right +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100755 index fdc0f31eb..000000000 --- a/bash-20060316/tests/dbg-support2.tests +++ /dev/null @@ -1,26 +0,0 @@ -#!../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 deleted file mode 100755 index 25c24435b..000000000 --- a/bash-20060316/tests/dollar-at-star +++ /dev/null @@ -1,226 +0,0 @@ -# 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 deleted file mode 100644 index 6d407863f..000000000 --- a/bash-20060316/tests/dollar-at1.sub +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index c079a2951..000000000 --- a/bash-20060316/tests/dollar-at2.sub +++ /dev/null @@ -1,19 +0,0 @@ -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 deleted file mode 100644 index 63a9ef86d..000000000 --- a/bash-20060316/tests/dollar-star1.sub +++ /dev/null @@ -1,31 +0,0 @@ -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 deleted file mode 100644 index 844a29728..000000000 --- a/bash-20060316/tests/dollar-star2.sub +++ /dev/null @@ -1,26 +0,0 @@ -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 deleted file mode 100644 index ff57f1c48..000000000 --- a/bash-20060316/tests/dollar.right +++ /dev/null @@ -1,136 +0,0 @@ -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 deleted file mode 100644 index 73a006ceb..000000000 --- a/bash-20060316/tests/dstack.right +++ /dev/null @@ -1,55 +0,0 @@ -./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 deleted file mode 100644 index 6c4cef142..000000000 --- a/bash-20060316/tests/dstack.tests +++ /dev/null @@ -1,87 +0,0 @@ -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 deleted file mode 100644 index d682a27f6..000000000 --- a/bash-20060316/tests/dstack2.right +++ /dev/null @@ -1,24 +0,0 @@ -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 deleted file mode 100644 index d902bffb4..000000000 --- a/bash-20060316/tests/dstack2.tests +++ /dev/null @@ -1,33 +0,0 @@ -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 deleted file mode 100644 index ac987fbdd..000000000 --- a/bash-20060316/tests/errors.right +++ /dev/null @@ -1,100 +0,0 @@ -./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 deleted file mode 100644 index 4ead467b1..000000000 --- a/bash-20060316/tests/errors.tests +++ /dev/null @@ -1,265 +0,0 @@ -# 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 deleted file mode 100644 index d65b89df6..000000000 --- a/bash-20060316/tests/exec.right +++ /dev/null @@ -1,54 +0,0 @@ -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 deleted file mode 100755 index 4a12501f7..000000000 --- a/bash-20060316/tests/exec1.sub +++ /dev/null @@ -1 +0,0 @@ -echo "$@" diff --git a/bash-20060316/tests/exec2.sub b/bash-20060316/tests/exec2.sub deleted file mode 100644 index c1caaead5..000000000 --- a/bash-20060316/tests/exec2.sub +++ /dev/null @@ -1,5 +0,0 @@ -# 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 deleted file mode 100644 index 4f2f8e21a..000000000 --- a/bash-20060316/tests/exec3.sub +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index a60d8b320..000000000 --- a/bash-20060316/tests/exec4.sub +++ /dev/null @@ -1,8 +0,0 @@ -# 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 deleted file mode 100644 index 1462f9e5d..000000000 --- a/bash-20060316/tests/exec5.sub +++ /dev/null @@ -1,9 +0,0 @@ -# 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 deleted file mode 100644 index 50d0e7012..000000000 --- a/bash-20060316/tests/exec6.sub +++ /dev/null @@ -1,54 +0,0 @@ -# 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 deleted file mode 100644 index ea2fd0668..000000000 --- a/bash-20060316/tests/exec7.sub +++ /dev/null @@ -1,20 +0,0 @@ -# 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 deleted file mode 100644 index 09a4ba5f5..000000000 --- a/bash-20060316/tests/execscript +++ /dev/null @@ -1,110 +0,0 @@ -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 deleted file mode 100644 index 884b5a699..000000000 --- a/bash-20060316/tests/exp-tests +++ /dev/null @@ -1,380 +0,0 @@ -# -# 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 deleted file mode 100644 index fdadbd910..000000000 --- a/bash-20060316/tests/exp.right +++ /dev/null @@ -1,147 +0,0 @@ -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 deleted file mode 100644 index 301e97b22..000000000 --- a/bash-20060316/tests/extglob.right +++ /dev/null @@ -1,89 +0,0 @@ -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 deleted file mode 100644 index 51e33ee73..000000000 --- a/bash-20060316/tests/extglob.tests +++ /dev/null @@ -1,365 +0,0 @@ -# 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 deleted file mode 100644 index 3beec9e86..000000000 --- a/bash-20060316/tests/extglob1.sub +++ /dev/null @@ -1,37 +0,0 @@ -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 deleted file mode 100644 index f8a09dfb5..000000000 --- a/bash-20060316/tests/extglob2.right +++ /dev/null @@ -1,70 +0,0 @@ -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 deleted file mode 100755 index f35c3e8bb..000000000 --- a/bash-20060316/tests/extglob2.tests +++ /dev/null @@ -1,90 +0,0 @@ -# -# 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 deleted file mode 100644 index 063f4e0b8..000000000 --- a/bash-20060316/tests/func.tests +++ /dev/null @@ -1,168 +0,0 @@ -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 deleted file mode 100644 index 345645fd0..000000000 --- a/bash-20060316/tests/func1.sub +++ /dev/null @@ -1,55 +0,0 @@ -# -# 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 deleted file mode 100644 index 2f9d5ceea..000000000 --- a/bash-20060316/tests/func2.sub +++ /dev/null @@ -1,17 +0,0 @@ -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 deleted file mode 100644 index 9d3d06943..000000000 --- a/bash-20060316/tests/func3.sub +++ /dev/null @@ -1,54 +0,0 @@ -# -# 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 deleted file mode 100644 index 92261038a..000000000 --- a/bash-20060316/tests/getopts.right +++ /dev/null @@ -1,56 +0,0 @@ -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 deleted file mode 100644 index 1814d7864..000000000 --- a/bash-20060316/tests/getopts.tests +++ /dev/null @@ -1,38 +0,0 @@ -# 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 deleted file mode 100644 index df0a342ea..000000000 --- a/bash-20060316/tests/getopts1.sub +++ /dev/null @@ -1,26 +0,0 @@ -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 deleted file mode 100644 index d91fd26a5..000000000 --- a/bash-20060316/tests/getopts2.sub +++ /dev/null @@ -1,26 +0,0 @@ -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 deleted file mode 100644 index 2d8b3162c..000000000 --- a/bash-20060316/tests/getopts3.sub +++ /dev/null @@ -1,27 +0,0 @@ -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 deleted file mode 100644 index 9cd5aef4c..000000000 --- a/bash-20060316/tests/getopts4.sub +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index c6e388816..000000000 --- a/bash-20060316/tests/getopts5.sub +++ /dev/null @@ -1,50 +0,0 @@ -#!/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 deleted file mode 100644 index 75d768c69..000000000 --- a/bash-20060316/tests/getopts6.sub +++ /dev/null @@ -1,27 +0,0 @@ -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 deleted file mode 100644 index a20a6df1e..000000000 --- a/bash-20060316/tests/getopts7.sub +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index d43570832..000000000 --- a/bash-20060316/tests/glob-test +++ /dev/null @@ -1,388 +0,0 @@ -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 deleted file mode 100644 index 8745cd99a..000000000 --- a/bash-20060316/tests/glob1.sub +++ /dev/null @@ -1,14 +0,0 @@ -# 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 deleted file mode 100644 index d71781e89..000000000 --- a/bash-20060316/tests/heredoc.right +++ /dev/null @@ -1,43 +0,0 @@ -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 deleted file mode 100644 index 80b01cf7e..000000000 --- a/bash-20060316/tests/herestr.right +++ /dev/null @@ -1,28 +0,0 @@ -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 deleted file mode 100644 index f77b229f5..000000000 --- a/bash-20060316/tests/herestr.tests +++ /dev/null @@ -1,39 +0,0 @@ -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 deleted file mode 100644 index f1c9e9d9a..000000000 --- a/bash-20060316/tests/histexp.right +++ /dev/null @@ -1,129 +0,0 @@ -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 deleted file mode 100644 index 721208cb2..000000000 --- a/bash-20060316/tests/histexp.tests +++ /dev/null @@ -1,124 +0,0 @@ -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 deleted file mode 100644 index 2a4c22292..000000000 --- a/bash-20060316/tests/history.list +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 556a3129b..000000000 --- a/bash-20060316/tests/history.right +++ /dev/null @@ -1,111 +0,0 @@ -./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 deleted file mode 100644 index 833cf3a99..000000000 --- a/bash-20060316/tests/history.tests +++ /dev/null @@ -1,98 +0,0 @@ -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/ifs-posix.right b/bash-20060316/tests/ifs-posix.right deleted file mode 100644 index f3bdccc6c..000000000 --- a/bash-20060316/tests/ifs-posix.right +++ /dev/null @@ -1 +0,0 @@ -# tests 6856 passed 6856 failed 0 diff --git a/bash-20060316/tests/ifs-posix.tests b/bash-20060316/tests/ifs-posix.tests deleted file mode 100644 index cf9a89874..000000000 --- a/bash-20060316/tests/ifs-posix.tests +++ /dev/null @@ -1,257 +0,0 @@ -# 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 deleted file mode 100644 index 512f6ee5a..000000000 --- a/bash-20060316/tests/ifs.right +++ /dev/null @@ -1,10 +0,0 @@ -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 deleted file mode 100644 index 763e2a001..000000000 --- a/bash-20060316/tests/ifs.tests +++ /dev/null @@ -1,61 +0,0 @@ -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 deleted file mode 100644 index 3f66c8172..000000000 --- a/bash-20060316/tests/input-line.sh +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 7bc8df297..000000000 --- a/bash-20060316/tests/input-line.sub +++ /dev/null @@ -1,2 +0,0 @@ -read line -echo line read by $0 was \`$line\' diff --git a/bash-20060316/tests/input.right b/bash-20060316/tests/input.right deleted file mode 100644 index 8733febea..000000000 --- a/bash-20060316/tests/input.right +++ /dev/null @@ -1,3 +0,0 @@ -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 deleted file mode 100644 index 21a3b4fd2..000000000 --- a/bash-20060316/tests/intl.right +++ /dev/null @@ -1,10 +0,0 @@ -é -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 deleted file mode 100644 index 0dc33cbb0..000000000 --- a/bash-20060316/tests/intl.tests +++ /dev/null @@ -1,38 +0,0 @@ -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 deleted file mode 100644 index 5a9239aa6..000000000 --- a/bash-20060316/tests/invert.right +++ /dev/null @@ -1,10 +0,0 @@ -1 -1 -1 -0 -0 -1 -0 -1 -0 -1 diff --git a/bash-20060316/tests/invert.tests b/bash-20060316/tests/invert.tests deleted file mode 100644 index 8393d95a4..000000000 --- a/bash-20060316/tests/invert.tests +++ /dev/null @@ -1,19 +0,0 @@ -# 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 deleted file mode 100644 index d164f1051..000000000 --- a/bash-20060316/tests/iquote.right +++ /dev/null @@ -1,61 +0,0 @@ -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 deleted file mode 100644 index a2cdf4f71..000000000 --- a/bash-20060316/tests/iquote.tests +++ /dev/null @@ -1,143 +0,0 @@ -# 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 deleted file mode 100644 index aa9a37261..000000000 --- a/bash-20060316/tests/jobs1.sub +++ /dev/null @@ -1,17 +0,0 @@ -# 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 deleted file mode 100644 index 496519b01..000000000 --- a/bash-20060316/tests/jobs2.sub +++ /dev/null @@ -1,13 +0,0 @@ -# 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 deleted file mode 100644 index 6efd58b09..000000000 --- a/bash-20060316/tests/jobs3.sub +++ /dev/null @@ -1,26 +0,0 @@ -#! /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 deleted file mode 100644 index 2eb4197a9..000000000 --- a/bash-20060316/tests/jobs4.sub +++ /dev/null @@ -1,24 +0,0 @@ -# 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 deleted file mode 100644 index 0f3a2281d..000000000 --- a/bash-20060316/tests/misc/dev-tcp.tests +++ /dev/null @@ -1,16 +0,0 @@ -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 deleted file mode 100644 index b3e126ec8..000000000 --- a/bash-20060316/tests/misc/input-line-2.sh +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index be67ec58f..000000000 --- a/bash-20060316/tests/misc/minus-e +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 45b983be3..000000000 --- a/bash-20060316/tests/misc/minus-e.right +++ /dev/null @@ -1 +0,0 @@ -hi diff --git a/bash-20060316/tests/misc/perf-script b/bash-20060316/tests/misc/perf-script deleted file mode 100644 index e1172a9df..000000000 --- a/bash-20060316/tests/misc/perf-script +++ /dev/null @@ -1,81 +0,0 @@ -#!/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 deleted file mode 100644 index ee3f2c66a..000000000 --- a/bash-20060316/tests/misc/perftest +++ /dev/null @@ -1,10 +0,0 @@ -# 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 deleted file mode 100644 index 40b1f982a..000000000 --- a/bash-20060316/tests/misc/read-nchars-int.tests +++ /dev/null @@ -1,11 +0,0 @@ -# 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 deleted file mode 100644 index 40b1f982a..000000000 --- a/bash-20060316/tests/misc/read-nchars.tests +++ /dev/null @@ -1,11 +0,0 @@ -# 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 deleted file mode 100644 index 44b2624ee..000000000 --- a/bash-20060316/tests/misc/redir-t2.sh +++ /dev/null @@ -1,17 +0,0 @@ -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 deleted file mode 100644 index 543242e84..000000000 --- a/bash-20060316/tests/misc/regress/getdate.mk +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100644 index 1df37738d..000000000 --- a/bash-20060316/tests/misc/regress/getdate.y +++ /dev/null @@ -1,553 +0,0 @@ -%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/shx b/bash-20060316/tests/misc/regress/shx deleted file mode 100644 index feb2bc8f1..000000000 --- a/bash-20060316/tests/misc/regress/shx +++ /dev/null @@ -1,15 +0,0 @@ -#! /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/shx1 b/bash-20060316/tests/misc/regress/shx1 deleted file mode 100644 index 73c5e8a4b..000000000 --- a/bash-20060316/tests/misc/regress/shx1 +++ /dev/null @@ -1,4 +0,0 @@ -# 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 deleted file mode 100644 index 03cff5bbb..000000000 --- a/bash-20060316/tests/misc/regress/shx2 +++ /dev/null @@ -1,5 +0,0 @@ -# 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 deleted file mode 100644 index 1fbbb3700..000000000 --- a/bash-20060316/tests/misc/regress/shx3 +++ /dev/null @@ -1,4 +0,0 @@ -# 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 deleted file mode 100644 index 9ae77817d..000000000 --- a/bash-20060316/tests/misc/regress/shx4 +++ /dev/null @@ -1,5 +0,0 @@ -# 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 deleted file mode 100644 index bd7ad0e2d..000000000 --- a/bash-20060316/tests/misc/regress/shx5 +++ /dev/null @@ -1,5 +0,0 @@ -# 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 deleted file mode 100644 index 12ba1ec15..000000000 --- a/bash-20060316/tests/misc/regress/shx7 +++ /dev/null @@ -1,9 +0,0 @@ -# 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 deleted file mode 100644 index b466ec1ef..000000000 --- a/bash-20060316/tests/misc/regress/shx8 +++ /dev/null @@ -1,3 +0,0 @@ -# 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 deleted file mode 100644 index ffbac4c65..000000000 --- a/bash-20060316/tests/misc/run-input-test-2 +++ /dev/null @@ -1,2 +0,0 @@ -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 deleted file mode 100644 index 2a91a3d22..000000000 --- a/bash-20060316/tests/misc/run-minus-e +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100755 index 0321a1bdd..000000000 --- a/bash-20060316/tests/misc/run-r2.sh +++ /dev/null @@ -1 +0,0 @@ -../../bash ./redir-t2.sh < /etc/passwd diff --git a/bash-20060316/tests/misc/sigint-1.sh b/bash-20060316/tests/misc/sigint-1.sh deleted file mode 100755 index 7b74c3073..000000000 --- a/bash-20060316/tests/misc/sigint-1.sh +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100755 index 69eaf56a0..000000000 --- a/bash-20060316/tests/misc/sigint-2.sh +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100755 index 2627fe6cb..000000000 --- a/bash-20060316/tests/misc/sigint-3.sh +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100755 index 587dd2651..000000000 --- a/bash-20060316/tests/misc/sigint-4.sh +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index 77cc3f26c..000000000 --- a/bash-20060316/tests/misc/test-minus-e.1 +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100644 index f66966eba..000000000 --- a/bash-20060316/tests/misc/test-minus-e.2 +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index 88b563167..000000000 --- a/bash-20060316/tests/misc/test.patmatch +++ /dev/null @@ -1,15 +0,0 @@ -# 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 deleted file mode 100644 index 95c98b087..000000000 --- a/bash-20060316/tests/misc/wait-bg.tests +++ /dev/null @@ -1,25 +0,0 @@ -#! /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 deleted file mode 100644 index 91a375cbc..000000000 --- a/bash-20060316/tests/more-exp.right +++ /dev/null @@ -1,214 +0,0 @@ -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 deleted file mode 100644 index 4a3cb7f54..000000000 --- a/bash-20060316/tests/more-exp.tests +++ /dev/null @@ -1,504 +0,0 @@ -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 deleted file mode 100644 index 9136132d5..000000000 --- a/bash-20060316/tests/new-exp.right +++ /dev/null @@ -1,505 +0,0 @@ -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 deleted file mode 100644 index 5932ed360..000000000 --- a/bash-20060316/tests/new-exp.tests +++ /dev/null @@ -1,558 +0,0 @@ -# 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 deleted file mode 100644 index c015c2239..000000000 --- a/bash-20060316/tests/new-exp1.sub +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index 5e922aac6..000000000 --- a/bash-20060316/tests/new-exp2.sub +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 3107ef14a..000000000 --- a/bash-20060316/tests/new-exp3.sub +++ /dev/null @@ -1,26 +0,0 @@ -: -# 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 deleted file mode 100644 index 45439a060..000000000 --- a/bash-20060316/tests/new-exp4.sub +++ /dev/null @@ -1,31 +0,0 @@ -#!/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 deleted file mode 100644 index 9b3e1b350..000000000 --- a/bash-20060316/tests/new-exp5.sub +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index 6d936d5e1..000000000 --- a/bash-20060316/tests/nquote.right +++ /dev/null @@ -1,37 +0,0 @@ -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 deleted file mode 100644 index 62d90b99a..000000000 --- a/bash-20060316/tests/nquote.tests +++ /dev/null @@ -1,116 +0,0 @@ -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 deleted file mode 100644 index 26e16b918..000000000 --- a/bash-20060316/tests/nquote1.right +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index 0970e77c1..000000000 --- a/bash-20060316/tests/nquote1.tests +++ /dev/null @@ -1,97 +0,0 @@ -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 deleted file mode 100644 index e7fb21ef3..000000000 --- a/bash-20060316/tests/nquote2.right +++ /dev/null @@ -1,76 +0,0 @@ -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 deleted file mode 100644 index c07bd9b82..000000000 --- a/bash-20060316/tests/nquote2.tests +++ /dev/null @@ -1,82 +0,0 @@ -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 deleted file mode 100644 index d01eecca1..000000000 --- a/bash-20060316/tests/nquote3.right +++ /dev/null @@ -1,60 +0,0 @@ -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 deleted file mode 100644 index a83ff56d5..000000000 --- a/bash-20060316/tests/nquote3.tests +++ /dev/null @@ -1,85 +0,0 @@ -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 deleted file mode 100644 index 1f7ae1703..000000000 --- a/bash-20060316/tests/nquote4.right +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index ed7346770..000000000 --- a/bash-20060316/tests/nquote4.tests +++ /dev/null @@ -1,24 +0,0 @@ -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 deleted file mode 100644 index cf9a89874..000000000 --- a/bash-20060316/tests/posix-ifs.sh +++ /dev/null @@ -1,257 +0,0 @@ -# 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 deleted file mode 100644 index df30c4f19..000000000 --- a/bash-20060316/tests/posix2.right +++ /dev/null @@ -1,2 +0,0 @@ -Testing for POSIX.2 conformance -All tests passed diff --git a/bash-20060316/tests/posix2.tests b/bash-20060316/tests/posix2.tests deleted file mode 100644 index a186e7819..000000000 --- a/bash-20060316/tests/posix2.tests +++ /dev/null @@ -1,179 +0,0 @@ -#! /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 deleted file mode 100644 index deb01bf2d..000000000 --- a/bash-20060316/tests/posixpat.right +++ /dev/null @@ -1,42 +0,0 @@ -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 deleted file mode 100644 index 91fac3b87..000000000 --- a/bash-20060316/tests/posixpat.tests +++ /dev/null @@ -1,233 +0,0 @@ -# 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 deleted file mode 100644 index e6af552c5..000000000 --- a/bash-20060316/tests/prec.right +++ /dev/null @@ -1,28 +0,0 @@ -`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 deleted file mode 100755 index 9bbdb971c..000000000 --- a/bash-20060316/tests/precedence +++ /dev/null @@ -1,75 +0,0 @@ -# @(#)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 deleted file mode 100644 index 656b1985dda5410c798d1a4121fe5e24ec3339b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 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@`> diff --git a/bash-20060316/tests/printf.tests b/bash-20060316/tests/printf.tests deleted file mode 100644 index 9cd730262..000000000 --- a/bash-20060316/tests/printf.tests +++ /dev/null @@ -1,248 +0,0 @@ -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 deleted file mode 100644 index 72d86a219..000000000 --- a/bash-20060316/tests/printf1.sub +++ /dev/null @@ -1,338 +0,0 @@ -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 deleted file mode 100644 index 424d1a043..000000000 --- a/bash-20060316/tests/quote.right +++ /dev/null @@ -1,68 +0,0 @@ -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 deleted file mode 100644 index 46edea751..000000000 --- a/bash-20060316/tests/quote.tests +++ /dev/null @@ -1,111 +0,0 @@ -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 deleted file mode 100644 index 8f0b2bffd..000000000 --- a/bash-20060316/tests/read.right +++ /dev/null @@ -1,62 +0,0 @@ -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 deleted file mode 100644 index f9c78c5a9..000000000 --- a/bash-20060316/tests/read.tests +++ /dev/null @@ -1,95 +0,0 @@ -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 deleted file mode 100644 index 2a36449b8..000000000 --- a/bash-20060316/tests/read1.sub +++ /dev/null @@ -1,23 +0,0 @@ -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 deleted file mode 100644 index 176cf8636..000000000 --- a/bash-20060316/tests/read2.sub +++ /dev/null @@ -1,22 +0,0 @@ -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 deleted file mode 100644 index 22088cbf3..000000000 --- a/bash-20060316/tests/read3.sub +++ /dev/null @@ -1,19 +0,0 @@ -# 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 deleted file mode 100644 index 80bc9fca4..000000000 --- a/bash-20060316/tests/read4.sub +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 58b992dce..000000000 --- a/bash-20060316/tests/read5.sub +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 68bea526c..000000000 --- a/bash-20060316/tests/redir.right +++ /dev/null @@ -1,102 +0,0 @@ -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 deleted file mode 100644 index 2669cd406..000000000 --- a/bash-20060316/tests/redir.tests +++ /dev/null @@ -1,174 +0,0 @@ -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 deleted file mode 100644 index f1082e9fa..000000000 --- a/bash-20060316/tests/redir1.sub +++ /dev/null @@ -1,8 +0,0 @@ -# -# 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 deleted file mode 100644 index 0820f701b..000000000 --- a/bash-20060316/tests/redir2.sub +++ /dev/null @@ -1 +0,0 @@ -echo this is redir2.sub diff --git a/bash-20060316/tests/redir3.in1 b/bash-20060316/tests/redir3.in1 deleted file mode 100644 index dbd1fc364..000000000 --- a/bash-20060316/tests/redir3.in1 +++ /dev/null @@ -1,2 +0,0 @@ -ab -cd diff --git a/bash-20060316/tests/redir3.in2 b/bash-20060316/tests/redir3.in2 deleted file mode 100644 index 5a1c32b01..000000000 --- a/bash-20060316/tests/redir3.in2 +++ /dev/null @@ -1,2 +0,0 @@ -root -daemon diff --git a/bash-20060316/tests/redir3.sub b/bash-20060316/tests/redir3.sub deleted file mode 100644 index c486253e6..000000000 --- a/bash-20060316/tests/redir3.sub +++ /dev/null @@ -1,26 +0,0 @@ -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 deleted file mode 100644 index e61ef7b96..000000000 --- a/bash-20060316/tests/redir4.in1 +++ /dev/null @@ -1 +0,0 @@ -aa diff --git a/bash-20060316/tests/redir4.sub b/bash-20060316/tests/redir4.sub deleted file mode 100644 index 47344554e..000000000 --- a/bash-20060316/tests/redir4.sub +++ /dev/null @@ -1,56 +0,0 @@ -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 deleted file mode 100644 index 5d59d39c5..000000000 --- a/bash-20060316/tests/redir5.sub +++ /dev/null @@ -1,31 +0,0 @@ -# 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 deleted file mode 100644 index 60cc68b0a..000000000 --- a/bash-20060316/tests/redir6.sub +++ /dev/null @@ -1,8 +0,0 @@ -cd / -pwd -help >&- -pwd -pwd -echo $? -echo $? -echo $? diff --git a/bash-20060316/tests/redir7.sub b/bash-20060316/tests/redir7.sub deleted file mode 100644 index 3fd371c70..000000000 --- a/bash-20060316/tests/redir7.sub +++ /dev/null @@ -1,69 +0,0 @@ -# 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 deleted file mode 100644 index c5dca4288..000000000 --- a/bash-20060316/tests/rhs-exp.right +++ /dev/null @@ -1,74 +0,0 @@ -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 deleted file mode 100644 index d457198d9..000000000 --- a/bash-20060316/tests/rhs-exp.tests +++ /dev/null @@ -1,49 +0,0 @@ -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 deleted file mode 100644 index e673b94d4..000000000 --- a/bash-20060316/tests/rsh.right +++ /dev/null @@ -1,13 +0,0 @@ -./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 deleted file mode 100644 index ffdf6e553..000000000 --- a/bash-20060316/tests/rsh.tests +++ /dev/null @@ -1,33 +0,0 @@ -# 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 deleted file mode 100644 index 6a20b06e9..000000000 --- a/bash-20060316/tests/run-alias +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index d3f3a0e9c..000000000 --- a/bash-20060316/tests/run-all +++ /dev/null @@ -1,29 +0,0 @@ -#! /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 deleted file mode 100644 index c5bffbc1b..000000000 --- a/bash-20060316/tests/run-appendop +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index f9f573c6e..000000000 --- a/bash-20060316/tests/run-arith +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 1d1307526..000000000 --- a/bash-20060316/tests/run-arith-for +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 44207d9cc..000000000 --- a/bash-20060316/tests/run-array +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index dd94ec824..000000000 --- a/bash-20060316/tests/run-array2 +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 53d4f1b77..000000000 --- a/bash-20060316/tests/run-braces +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 53d963ebf..000000000 --- a/bash-20060316/tests/run-builtins +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 6b119a621..000000000 --- a/bash-20060316/tests/run-cond +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 5f202e437..000000000 --- a/bash-20060316/tests/run-cprint +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100755 index 9e9c649c6..000000000 --- a/bash-20060316/tests/run-dbg-support +++ /dev/null @@ -1,11 +0,0 @@ -#!../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 deleted file mode 100755 index f62583f8b..000000000 --- a/bash-20060316/tests/run-dbg-support2 +++ /dev/null @@ -1,16 +0,0 @@ -#!../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 deleted file mode 100644 index 6390d1b75..000000000 --- a/bash-20060316/tests/run-dirstack +++ /dev/null @@ -1,5 +0,0 @@ -${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 deleted file mode 100644 index 0ced4145a..000000000 --- a/bash-20060316/tests/run-dollars +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 6be4e0c7b..000000000 --- a/bash-20060316/tests/run-errors +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index f97ab21b1..000000000 --- a/bash-20060316/tests/run-execscript +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100644 index c55f7147b..000000000 --- a/bash-20060316/tests/run-exp-tests +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 06316ad3c..000000000 --- a/bash-20060316/tests/run-extglob +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 0a6f728ec..000000000 --- a/bash-20060316/tests/run-extglob2 +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 267519686..000000000 --- a/bash-20060316/tests/run-extglob3 +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index f449eb866..000000000 --- a/bash-20060316/tests/run-func +++ /dev/null @@ -1,5 +0,0 @@ -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 deleted file mode 100644 index 1e8b5fb73..000000000 --- a/bash-20060316/tests/run-getopts +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 659112a36..000000000 --- a/bash-20060316/tests/run-glob-test +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 87d508673..000000000 --- a/bash-20060316/tests/run-gprof +++ /dev/null @@ -1,53 +0,0 @@ -#! /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 deleted file mode 100644 index c4e3168c1..000000000 --- a/bash-20060316/tests/run-heredoc +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 8c5b36d32..000000000 --- a/bash-20060316/tests/run-herestr +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 06a415bd9..000000000 --- a/bash-20060316/tests/run-histexpand +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index ea356b199..000000000 --- a/bash-20060316/tests/run-history +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 3f9d82097..000000000 --- a/bash-20060316/tests/run-ifs +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index e578e8dd3..000000000 --- a/bash-20060316/tests/run-ifs-posix +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index aaa5d35d8..000000000 --- a/bash-20060316/tests/run-input-test +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 6a9234a3b..000000000 --- a/bash-20060316/tests/run-intl +++ /dev/null @@ -1,8 +0,0 @@ -# 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 deleted file mode 100644 index 67e08792a..000000000 --- a/bash-20060316/tests/run-invert +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 61a8aa772..000000000 --- a/bash-20060316/tests/run-iquote +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index bfd4fa039..000000000 --- a/bash-20060316/tests/run-jobs +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 5c5dcc498..000000000 --- a/bash-20060316/tests/run-minimal +++ /dev/null @@ -1,36 +0,0 @@ -#! /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 deleted file mode 100644 index 60f55cb69..000000000 --- a/bash-20060316/tests/run-more-exp +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 2e3d7c9da..000000000 --- a/bash-20060316/tests/run-new-exp +++ /dev/null @@ -1,10 +0,0 @@ -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 deleted file mode 100644 index 006872c85..000000000 --- a/bash-20060316/tests/run-nquote +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index a71740fd2..000000000 --- a/bash-20060316/tests/run-nquote1 +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 80d1a8da3..000000000 --- a/bash-20060316/tests/run-nquote2 +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 45ba5f7e4..000000000 --- a/bash-20060316/tests/run-nquote3 +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index f7d05bb29..000000000 --- a/bash-20060316/tests/run-nquote4 +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 52eea2faa..000000000 --- a/bash-20060316/tests/run-posix2 +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index ef2b140da..000000000 --- a/bash-20060316/tests/run-posixpat +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index d81a86887..000000000 --- a/bash-20060316/tests/run-precedence +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 4555c6267..000000000 --- a/bash-20060316/tests/run-printf +++ /dev/null @@ -1,5 +0,0 @@ -# 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 deleted file mode 100644 index 69050428e..000000000 --- a/bash-20060316/tests/run-quote +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 47e4188b9..000000000 --- a/bash-20060316/tests/run-read +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 2be45dd68..000000000 --- a/bash-20060316/tests/run-redir +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 1f89d0b61..000000000 --- a/bash-20060316/tests/run-rhs-exp +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index ef2358370..000000000 --- a/bash-20060316/tests/run-rsh +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index cca61cd40..000000000 --- a/bash-20060316/tests/run-set-e +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100755 index b999e6980..000000000 --- a/bash-20060316/tests/run-set-x +++ /dev/null @@ -1,11 +0,0 @@ -#!../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 deleted file mode 100644 index 100a3de02..000000000 --- a/bash-20060316/tests/run-shopt +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 0d321152e..000000000 --- a/bash-20060316/tests/run-strip +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index b2482c3f0..000000000 --- a/bash-20060316/tests/run-test +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index b8569c11c..000000000 --- a/bash-20060316/tests/run-tilde +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index 4446989df..000000000 --- a/bash-20060316/tests/run-tilde2 +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index b44844356..000000000 --- a/bash-20060316/tests/run-trap +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 4d195b01b..000000000 --- a/bash-20060316/tests/run-type +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index f0ce19529..000000000 --- a/bash-20060316/tests/run-varenv +++ /dev/null @@ -1,2 +0,0 @@ -${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 deleted file mode 100644 index fe1549c41..000000000 --- a/bash-20060316/tests/set-e-test +++ /dev/null @@ -1,84 +0,0 @@ -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 deleted file mode 100644 index 644841352..000000000 --- a/bash-20060316/tests/set-e.right +++ /dev/null @@ -1,28 +0,0 @@ -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 deleted file mode 100644 index fc55bd887..000000000 --- a/bash-20060316/tests/set-x.right +++ /dev/null @@ -1,28 +0,0 @@ -+ (( 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 deleted file mode 100755 index 323b772db..000000000 --- a/bash-20060316/tests/set-x.tests +++ /dev/null @@ -1,21 +0,0 @@ -#!../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 deleted file mode 100644 index b2fc219c2..000000000 --- a/bash-20060316/tests/shopt.right +++ /dev/null @@ -1,238 +0,0 @@ -./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 deleted file mode 100644 index d4f2a8b1f..000000000 --- a/bash-20060316/tests/shopt.tests +++ /dev/null @@ -1,94 +0,0 @@ -# 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 deleted file mode 100644 index 8b8586f17..000000000 --- a/bash-20060316/tests/source1.sub +++ /dev/null @@ -1 +0,0 @@ -echo $AVAR diff --git a/bash-20060316/tests/source2.sub b/bash-20060316/tests/source2.sub deleted file mode 100644 index 7a031a11a..000000000 --- a/bash-20060316/tests/source2.sub +++ /dev/null @@ -1,5 +0,0 @@ -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 deleted file mode 100644 index 4a12501f7..000000000 --- a/bash-20060316/tests/source3.sub +++ /dev/null @@ -1 +0,0 @@ -echo "$@" diff --git a/bash-20060316/tests/source4.sub b/bash-20060316/tests/source4.sub deleted file mode 100644 index 717c1ab91..000000000 --- a/bash-20060316/tests/source4.sub +++ /dev/null @@ -1 +0,0 @@ -set -- m n o p diff --git a/bash-20060316/tests/source5.sub b/bash-20060316/tests/source5.sub deleted file mode 100644 index 813ffaed1..000000000 --- a/bash-20060316/tests/source5.sub +++ /dev/null @@ -1,19 +0,0 @@ -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 deleted file mode 100644 index dfab897f4..000000000 --- a/bash-20060316/tests/strip.right +++ /dev/null @@ -1,12 +0,0 @@ -'' -' ab ' -' ' -'' -'' -'' -'ababababababab' -'ababababababab ' -'ababababababab ' -'abababa -bababab ' -'' diff --git a/bash-20060316/tests/strip.tests b/bash-20060316/tests/strip.tests deleted file mode 100644 index b669b52ee..000000000 --- a/bash-20060316/tests/strip.tests +++ /dev/null @@ -1,22 +0,0 @@ -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 deleted file mode 100644 index beb3af6b2..000000000 --- a/bash-20060316/tests/test.right +++ /dev/null @@ -1,284 +0,0 @@ -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 deleted file mode 100644 index a915c4e40..000000000 --- a/bash-20060316/tests/test.tests +++ /dev/null @@ -1,423 +0,0 @@ -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 deleted file mode 100644 index fe58ae34e..000000000 --- a/bash-20060316/tests/tilde.right +++ /dev/null @@ -1,25 +0,0 @@ -~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 deleted file mode 100644 index 8b2bdb8b2..000000000 --- a/bash-20060316/tests/tilde.tests +++ /dev/null @@ -1,69 +0,0 @@ -# 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 deleted file mode 100644 index fce04687e..000000000 --- a/bash-20060316/tests/tilde2.right +++ /dev/null @@ -1,24 +0,0 @@ -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 deleted file mode 100644 index ff6c76f0c..000000000 --- a/bash-20060316/tests/tilde2.tests +++ /dev/null @@ -1,70 +0,0 @@ -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 deleted file mode 100644 index 06881e95a..000000000 --- a/bash-20060316/tests/time.tests +++ /dev/null @@ -1,22 +0,0 @@ -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 deleted file mode 100644 index 72f3b6d28..000000000 --- a/bash-20060316/tests/trap.right +++ /dev/null @@ -1,74 +0,0 @@ -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 deleted file mode 100644 index 9aac72545..000000000 --- a/bash-20060316/tests/trap.tests +++ /dev/null @@ -1,86 +0,0 @@ -# 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 deleted file mode 100755 index 48f853022..000000000 --- a/bash-20060316/tests/trap1.sub +++ /dev/null @@ -1,4 +0,0 @@ -# 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 deleted file mode 100755 index 73357df2a..000000000 --- a/bash-20060316/tests/trap2.sub +++ /dev/null @@ -1,25 +0,0 @@ -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 deleted file mode 100755 index 44d6b50ef..000000000 --- a/bash-20060316/tests/trap2a.sub +++ /dev/null @@ -1,3 +0,0 @@ -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 deleted file mode 100644 index dbd51caf2..000000000 --- a/bash-20060316/tests/type.right +++ /dev/null @@ -1,48 +0,0 @@ -./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 deleted file mode 100644 index d47ae647b..000000000 --- a/bash-20060316/tests/type.tests +++ /dev/null @@ -1,82 +0,0 @@ -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 deleted file mode 100644 index df8086dc6..000000000 --- a/bash-20060316/tests/varenv.right +++ /dev/null @@ -1,56 +0,0 @@ -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 deleted file mode 100644 index 77776f9b1..000000000 --- a/bash-20060316/tests/varenv.sh +++ /dev/null @@ -1,206 +0,0 @@ -# -# 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 deleted file mode 100644 index 168f87b14..000000000 --- a/bash-20060316/tests/varenv1.sub +++ /dev/null @@ -1,28 +0,0 @@ -# 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 deleted file mode 100644 index b2935726d..000000000 --- a/bash-20060316/tests/varenv2.sub +++ /dev/null @@ -1,44 +0,0 @@ -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 deleted file mode 100644 index bd7402053..000000000 --- a/bash-20060316/tests/version +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index 72e4bf963..000000000 --- a/bash-20060316/tests/version.mini +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index 64cdbd086..000000000 --- a/bash-20060316/trap.c +++ /dev/null @@ -1,984 +0,0 @@ -/* 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 deleted file mode 100644 index d1600e030..000000000 --- a/bash-20060316/trap.h +++ /dev/null @@ -1,98 +0,0 @@ -/* 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 deleted file mode 100644 index 4bb7a78f0..000000000 --- a/bash-20060316/unwind_prot.c +++ /dev/null @@ -1,320 +0,0 @@ -/* 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 deleted file mode 100644 index 8033a0500..000000000 --- a/bash-20060316/unwind_prot.h +++ /dev/null @@ -1,48 +0,0 @@ -/* 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 deleted file mode 100644 index f9b9de79e..000000000 --- a/bash-20060316/variables.c +++ /dev/null @@ -1,4282 +0,0 @@ -/* 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 deleted file mode 100644 index eec26c31a..000000000 --- a/bash-20060316/variables.h +++ /dev/null @@ -1,366 +0,0 @@ -/* 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 deleted file mode 100644 index f37337276..000000000 --- a/bash-20060316/version.c +++ /dev/null @@ -1,83 +0,0 @@ -/* 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 deleted file mode 100644 index 93d192810..000000000 --- a/bash-20060316/xmalloc.c +++ /dev/null @@ -1,193 +0,0 @@ -/* 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 deleted file mode 100644 index 5ae8294ce..000000000 --- a/bash-20060316/xmalloc.h +++ /dev/null @@ -1,58 +0,0 @@ -/* 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/copyright-comment b/copyright-comment deleted file mode 100644 index 83f754417..000000000 --- a/copyright-comment +++ /dev/null @@ -1,13 +0,0 @@ - Bash is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Bash is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Bash. If not, see . -*/ diff --git a/copyright-def b/copyright-def deleted file mode 100644 index 1d083e4c8..000000000 --- a/copyright-def +++ /dev/null @@ -1,12 +0,0 @@ -Bash is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Bash is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Bash. If not, see . diff --git a/copyright-makefile b/copyright-makefile deleted file mode 100644 index e9f3fab05..000000000 --- a/copyright-makefile +++ /dev/null @@ -1,13 +0,0 @@ -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# diff --git a/ddd1 b/ddd1 deleted file mode 100644 index c2fb91e8e..000000000 --- a/ddd1 +++ /dev/null @@ -1,12 +0,0 @@ -*** ../bash-3.2-patched/bashhist.h 2005-07-01 15:44:41.000000000 -0400 ---- bashhist.h 2008-08-17 12:51:07.000000000 -0400 -*************** -*** 32,35 **** ---- 32,38 ---- - - extern int remember_on_history; -+ extern int enable_history_list; /* value for `set -o history' */ -+ extern int literal_history; /* controlled by `shopt lithist' */ -+ extern int force_append_history; - extern int history_lines_this_session; - extern int history_lines_in_file; diff --git a/display-ctrl-r.patch b/display-ctrl-r.patch deleted file mode 100644 index e4d5318c6..000000000 --- a/display-ctrl-r.patch +++ /dev/null @@ -1,47 +0,0 @@ -*** ../bash-3.2-patched/lib/readline/display.c Fri Apr 20 15:19:04 2007 ---- lib/readline/display.c Thu May 24 14:13:57 2007 -*************** -*** 1518,1528 **** - { - /* Non-zero if we're increasing the number of lines. */ - int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; - /* Sometimes it is cheaper to print the characters rather than - use the terminal's capabilities. If we're growing the number - of lines, make sure we actually cause the new line to wrap - around on auto-wrapping terminals. */ -! if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl)) - { - /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and - _rl_horizontal_scroll_mode == 1, inserting the characters with ---- 1544,1574 ---- - { - /* Non-zero if we're increasing the number of lines. */ - int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; -+ /* If col_lendiff is > 0, implying that the new string takes up more -+ screen real estate than the old, but lendiff is < 0, meaning that it -+ takes fewer bytes, we need to just output the characters starting -+ from the first difference. These will overwrite what is on the -+ display, so there's no reason to do a smart update. This can really -+ only happen in a multibyte environment. */ -+ if (lendiff < 0) -+ { -+ _rl_output_some_chars (nfd, temp); -+ _rl_last_c_pos += _rl_col_width (nfd, 0, temp); -+ /* If nfd begins before any invisible characters in the prompt, -+ adjust _rl_last_c_pos to account for wrap_offset and set -+ cpos_adjusted to let the caller know. */ -+ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) -+ { -+ _rl_last_c_pos -= wrap_offset; -+ cpos_adjusted = 1; -+ } -+ return; -+ } - /* Sometimes it is cheaper to print the characters rather than - use the terminal's capabilities. If we're growing the number - of lines, make sure we actually cause the new line to wrap - around on auto-wrapping terminals. */ -! else if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl)) - { - /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and - _rl_horizontal_scroll_mode == 1, inserting the characters with diff --git a/jobs-patch b/jobs-patch deleted file mode 100644 index 8b2d16326..000000000 --- a/jobs-patch +++ /dev/null @@ -1,65 +0,0 @@ -*** ../bash-20070510/jobs.c Thu Mar 8 16:05:50 2007 ---- jobs.c Fri May 18 11:40:14 2007 -*************** -*** 784,792 **** - { - old = js.j_firstj++; - while (js.j_firstj != old) - { - if (js.j_firstj >= js.j_jobslots) - js.j_firstj = 0; -! if (jobs[js.j_firstj]) - break; - js.j_firstj++; ---- 784,794 ---- - { - old = js.j_firstj++; -+ if (old >= js.j_jobslots) -+ old = js.j_jobslots - 1; - while (js.j_firstj != old) - { - if (js.j_firstj >= js.j_jobslots) - js.j_firstj = 0; -! if (jobs[js.j_firstj] || js.j_firstj == old) /* needed if old == 0 */ - break; - js.j_firstj++; -*************** -*** 798,806 **** - { - old = js.j_lastj--; - while (js.j_lastj != old) - { - if (js.j_lastj < 0) - js.j_lastj = js.j_jobslots - 1; -! if (jobs[js.j_lastj]) - break; - js.j_lastj--; ---- 800,810 ---- - { - old = js.j_lastj--; -+ if (old < 0) -+ old = 0; - while (js.j_lastj != old) - { - if (js.j_lastj < 0) - js.j_lastj = js.j_jobslots - 1; -! if (jobs[js.j_lastj] || js.j_lastj == old) /* needed if old == js.j_jobslots */ - break; - js.j_lastj--; -*************** -*** 964,968 **** - realloc_jobs_list (); - -! return (js.j_lastj ? js.j_lastj + 1 : 0); - } - ---- 975,983 ---- - realloc_jobs_list (); - -! #ifdef DEBUG -! itrace("compact_jobs_list: returning %d", (js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0); -! #endif -! -! return ((js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0); - } - diff --git a/jobs.c.20080704 b/jobs.c.20080704 deleted file mode 100644 index 1157bddff..000000000 --- a/jobs.c.20080704 +++ /dev/null @@ -1,4165 +0,0 @@ -/* The thing that makes children, remembers them, and contains wait loops. */ - -/* This file works with both POSIX and BSD systems. It implements job - control. */ - -/* Copyright (C) 1989-2008 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 "trap.h" -#include -#include -#include - -#if defined (HAVE_UNISTD_H) -# include -#endif - -#include "posixtime.h" - -#if defined (HAVE_SYS_RESOURCE_H) && defined (HAVE_WAIT3) && !defined (_POSIX_VERSION) && !defined (RLIMTYPE) -# include -#endif /* !_POSIX_VERSION && HAVE_SYS_RESOURCE_H && HAVE_WAIT3 && !RLIMTYPE */ - -#if defined (HAVE_SYS_FILE_H) -# include -#endif - -#include "filecntl.h" -#include -#include - -#if defined (BUFFERED_INPUT) -# include "input.h" -#endif - -/* Need to include this up here for *_TTY_DRIVER definitions. */ -#include "shtty.h" - -/* Define this if your output is getting swallowed. It's a no-op on - machines with the termio or termios tty drivers. */ -/* #define DRAIN_OUTPUT */ - -/* For the TIOCGPGRP and TIOCSPGRP ioctl parameters on HP-UX */ -#if defined (hpux) && !defined (TERMIOS_TTY_DRIVER) -# include -#endif /* hpux && !TERMIOS_TTY_DRIVER */ - -#include "bashansi.h" -#include "bashintl.h" -#include "shell.h" -#include "jobs.h" -#include "flags.h" - -#include "builtins/builtext.h" -#include "builtins/common.h" - -#if !defined (errno) -extern int errno; -#endif /* !errno */ - -#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 - children. The arguments to the WAITPID macro match those to the Posix.1 - waitpid() function. */ - -#if defined (ultrix) && defined (mips) && defined (_POSIX_VERSION) -# define WAITPID(pid, statusp, options) \ - wait3 ((union wait *)statusp, options, (struct rusage *)0) -#else -# if defined (_POSIX_VERSION) || defined (HAVE_WAITPID) -# define WAITPID(pid, statusp, options) \ - waitpid ((pid_t)pid, statusp, options) -# else -# if defined (HAVE_WAIT3) -# define WAITPID(pid, statusp, options) \ - wait3 (statusp, options, (struct rusage *)0) -# else -# define WAITPID(pid, statusp, options) \ - wait3 (statusp, options, (int *)0) -# endif /* HAVE_WAIT3 */ -# endif /* !_POSIX_VERSION && !HAVE_WAITPID*/ -#endif /* !(Ultrix && mips && _POSIX_VERSION) */ - -/* getpgrp () varies between systems. Even systems that claim to be - Posix.1 compatible lie sometimes (Ultrix, SunOS4, apollo). */ -#if defined (GETPGRP_VOID) -# define getpgid(p) getpgrp () -#else -# define getpgid(p) getpgrp (p) -#endif /* !GETPGRP_VOID */ - -/* If the system needs it, REINSTALL_SIGCHLD_HANDLER will reinstall the - handler for SIGCHLD. */ -#if defined (MUST_REINSTALL_SIGHANDLERS) -# define REINSTALL_SIGCHLD_HANDLER signal (SIGCHLD, sigchld_handler) -#else -# define REINSTALL_SIGCHLD_HANDLER -#endif /* !MUST_REINSTALL_SIGHANDLERS */ - -/* Some systems let waitpid(2) tell callers about stopped children. */ -#if !defined (WCONTINUED) || defined (WCONTINUED_BROKEN) -# undef WCONTINUED -# define WCONTINUED 0 -#endif -#if !defined (WIFCONTINUED) -# define WIFCONTINUED(s) (0) -#endif - -/* The number of additional slots to allocate when we run out. */ -#define JOB_SLOTS 8 - -typedef int sh_job_map_func_t __P((JOB *, int, int, int)); - -/* Variables used here but defined in other files. */ -extern int subshell_environment, line_number; -extern int posixly_correct, shell_level; -extern int last_command_exit_value, last_command_exit_signal; -extern int loop_level, breaking; -extern int sourcelevel; -extern int running_trap; -extern sh_builtin_func_t *this_shell_builtin; -extern char *shell_name, *this_command_name; -extern sigset_t top_level_mask; -extern procenv_t wait_intr_buf; -extern int wait_signal_received; -extern WORD_LIST *subst_assign_varlist; - -static struct jobstats zerojs = { -1L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NO_JOB, NO_JOB, 0, 0 }; -struct jobstats js = { -1L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NO_JOB, NO_JOB, 0, 0 }; - -struct bgpids bgpids = { 0, 0, 0 }; - -/* The array of known jobs. */ -JOB **jobs = (JOB **)NULL; - -#if 0 -/* The number of slots currently allocated to JOBS. */ -int job_slots = 0; -#endif - -/* The controlling tty for this shell. */ -int shell_tty = -1; - -/* The shell's process group. */ -pid_t shell_pgrp = NO_PID; - -/* The terminal's process group. */ -pid_t terminal_pgrp = NO_PID; - -/* The process group of the shell's parent. */ -pid_t original_pgrp = NO_PID; - -/* The process group of the pipeline currently being made. */ -pid_t pipeline_pgrp = (pid_t)0; - -#if defined (PGRP_PIPE) -/* Pipes which each shell uses to communicate with the process group leader - until all of the processes in a pipeline have been started. Then the - process leader is allowed to continue. */ -int pgrp_pipe[2] = { -1, -1 }; -#endif - -#if 0 -/* The job which is current; i.e. the one that `%+' stands for. */ -int current_job = NO_JOB; - -/* The previous job; i.e. the one that `%-' stands for. */ -int previous_job = NO_JOB; -#endif - -/* Last child made by the shell. */ -pid_t last_made_pid = NO_PID; - -/* Pid of the last asynchronous child. */ -pid_t last_asynchronous_pid = NO_PID; - -/* The pipeline currently being built. */ -PROCESS *the_pipeline = (PROCESS *)NULL; - -/* If this is non-zero, do job control. */ -int job_control = 1; - -/* Call this when you start making children. */ -int already_making_children = 0; - -/* If this is non-zero, $LINES and $COLUMNS are reset after every process - exits from get_tty_state(). */ -int check_window_size; - -/* Functions local to this file. */ - -static sighandler wait_sigint_handler __P((int)); -static sighandler sigchld_handler __P((int)); -static sighandler sigcont_sighandler __P((int)); -static sighandler sigstop_sighandler __P((int)); - -static int waitchld __P((pid_t, int)); - -static PROCESS *find_pipeline __P((pid_t, int, int *)); -static PROCESS *find_process __P((pid_t, int, int *)); - -static char *current_working_directory __P((void)); -static char *job_working_directory __P((void)); -static char *j_strsignal __P((int)); -static char *printable_job_status __P((int, PROCESS *, int)); - -static PROCESS *find_last_proc __P((int, int)); -static pid_t find_last_pid __P((int, int)); - -static int set_new_line_discipline __P((int)); -static int map_over_jobs __P((sh_job_map_func_t *, int, int)); -static int job_last_stopped __P((int)); -static int job_last_running __P((int)); -static int most_recent_job_in_state __P((int, JOB_STATE)); -static int find_job __P((pid_t, int, PROCESS **)); -static int print_job __P((JOB *, int, int, int)); -static int process_exit_status __P((WAIT)); -static int process_exit_signal __P((WAIT)); -static int job_exit_status __P((int)); -static int job_exit_signal __P((int)); -static int set_job_status_and_cleanup __P((int)); - -static WAIT job_signal_status __P((int)); -static WAIT raw_job_exit_status __P((int)); - -static void notify_of_job_status __P((void)); -static void reset_job_indices __P((void)); -static void cleanup_dead_jobs __P((void)); -static int processes_in_job __P((int)); -static void realloc_jobs_list __P((void)); -static int compact_jobs_list __P((int)); -static int discard_pipeline __P((PROCESS *)); -static void add_process __P((char *, pid_t)); -static void print_pipeline __P((PROCESS *, int, int, FILE *)); -static void pretty_print_job __P((int, int, FILE *)); -static void set_current_job __P((int)); -static void reset_current __P((void)); -static void set_job_running __P((int)); -static void setjstatus __P((int)); -static void mark_all_jobs_as_dead __P((void)); -static void mark_dead_jobs_as_notified __P((int)); -static void restore_sigint_handler __P((void)); -#if defined (PGRP_PIPE) -static void pipe_read __P((int *)); -#endif - -static struct pidstat *bgp_alloc __P((pid_t, int)); -static struct pidstat *bgp_add __P((pid_t, int)); -static int bgp_delete __P((pid_t)); -static void bgp_clear __P((void)); -static int bgp_search __P((pid_t)); -static void bgp_prune __P((void)); - -#if defined (ARRAY_VARS) -static int *pstatuses; /* list of pipeline statuses */ -static int statsize; -#endif - -/* Used to synchronize between wait_for and other functions and the SIGCHLD - signal handler. */ -static int sigchld; -static int queue_sigchld; - -#define QUEUE_SIGCHLD(os) (os) = sigchld, queue_sigchld++ - -#define UNQUEUE_SIGCHLD(os) \ - do { \ - queue_sigchld--; \ - if (queue_sigchld == 0 && os != sigchld) \ - waitchld (-1, 0); \ - } while (0) - -static SigHandler *old_tstp, *old_ttou, *old_ttin; -static SigHandler *old_cont = (SigHandler *)SIG_DFL; - -/* A place to temporarily save the current pipeline. */ -static PROCESS *saved_pipeline; -static int saved_already_making_children; - -/* Set this to non-zero whenever you don't want the jobs list to change at - all: no jobs deleted and no status change notifications. This is used, - for example, when executing SIGCHLD traps, which may run arbitrary - commands. */ -static int jobs_list_frozen; - -static char retcode_name_buffer[64]; - -/* flags to detect pid wraparound */ -static pid_t first_pid = NO_PID; -static int pid_wrap = -1; - -#if !defined (_POSIX_VERSION) - -/* These are definitions to map POSIX 1003.1 functions onto existing BSD - library functions and system calls. */ -#define setpgid(pid, pgrp) setpgrp (pid, pgrp) -#define tcsetpgrp(fd, pgrp) ioctl ((fd), TIOCSPGRP, &(pgrp)) - -pid_t -tcgetpgrp (fd) - int fd; -{ - pid_t pgrp; - - /* ioctl will handle setting errno correctly. */ - if (ioctl (fd, TIOCGPGRP, &pgrp) < 0) - return (-1); - return (pgrp); -} - -#endif /* !_POSIX_VERSION */ - -/* Initialize the global job stats structure and other bookkeeping variables */ -void -init_job_stats () -{ - js = zerojs; - first_pid = NO_PID; - pid_wrap = -1; -} - -/* Return the working directory for the current process. Unlike - job_working_directory, this does not call malloc (), nor do any - of the functions it calls. This is so that it can safely be called - from a signal handler. */ -static char * -current_working_directory () -{ - char *dir; - static char d[PATH_MAX]; - - dir = get_string_value ("PWD"); - - if (dir == 0 && the_current_working_directory && no_symbolic_links) - dir = the_current_working_directory; - - if (dir == 0) - { - dir = getcwd (d, sizeof(d)); - if (dir) - dir = d; - } - - return (dir == 0) ? "" : dir; -} - -/* Return the working directory for the current process. */ -static char * -job_working_directory () -{ - char *dir; - - dir = get_string_value ("PWD"); - if (dir) - return (savestring (dir)); - - dir = get_working_directory ("job-working-directory"); - if (dir) - return (dir); - - return (savestring ("")); -} - -void -making_children () -{ - if (already_making_children) - return; - - already_making_children = 1; - start_pipeline (); -} - -void -stop_making_children () -{ - already_making_children = 0; -} - -void -cleanup_the_pipeline () -{ - PROCESS *disposer; - sigset_t set, oset; - - BLOCK_CHILD (set, oset); - disposer = the_pipeline; - the_pipeline = (PROCESS *)NULL; - UNBLOCK_CHILD (oset); - - if (disposer) - discard_pipeline (disposer); -} - -void -save_pipeline (clear) - int clear; -{ - saved_pipeline = the_pipeline; - if (clear) - the_pipeline = (PROCESS *)NULL; - saved_already_making_children = already_making_children; -} - -void -restore_pipeline (discard) - int discard; -{ - PROCESS *old_pipeline; - - old_pipeline = the_pipeline; - the_pipeline = saved_pipeline; - already_making_children = saved_already_making_children; - if (discard) - discard_pipeline (old_pipeline); -} - -/* Start building a pipeline. */ -void -start_pipeline () -{ - if (the_pipeline) - { - cleanup_the_pipeline (); - pipeline_pgrp = 0; -#if defined (PGRP_PIPE) - sh_closepipe (pgrp_pipe); -#endif - } - -#if defined (PGRP_PIPE) - if (job_control) - { - if (pipe (pgrp_pipe) == -1) - sys_error (_("start_pipeline: pgrp pipe")); - } -#endif -} - -/* Stop building a pipeline. Install the process list in the job array. - This returns the index of the newly installed job. - DEFERRED is a command structure to be executed upon satisfactory - execution exit of this pipeline. */ -int -stop_pipeline (async, deferred) - int async; - COMMAND *deferred; -{ - register int i, j; - JOB *newjob; - sigset_t set, oset; - - BLOCK_CHILD (set, oset); - -#if defined (PGRP_PIPE) - /* The parent closes the process group synchronization pipe. */ - sh_closepipe (pgrp_pipe); -#endif - - cleanup_dead_jobs (); - - if (js.j_jobslots == 0) - { - js.j_jobslots = JOB_SLOTS; - jobs = (JOB **)xmalloc (js.j_jobslots * sizeof (JOB *)); - - /* Now blank out these new entries. */ - for (i = 0; i < js.j_jobslots; i++) - jobs[i] = (JOB *)NULL; - - js.j_firstj = js.j_lastj = js.j_njobs = 0; - } - - /* Scan from the last slot backward, looking for the next free one. */ - /* XXX - revisit this interactive assumption */ - /* XXX - this way for now */ - if (interactive) - { - for (i = js.j_jobslots; i; i--) - if (jobs[i - 1]) - break; - } - else - { -#if 0 - /* This wraps around, but makes it inconvenient to extend the array */ - for (i = js.j_lastj+1; i != js.j_lastj; i++) - { - if (i >= js.j_jobslots) - i = 0; - if (jobs[i] == 0) - break; - } - if (i == js.j_lastj) - i = js.j_jobslots; -#else - /* This doesn't wrap around yet. */ - for (i = js.j_lastj ? js.j_lastj + 1 : js.j_lastj; i < js.j_jobslots; i++) - if (jobs[i] == 0) - break; -#endif - } - - /* Do we need more room? */ - - /* First try compaction */ - if ((interactive_shell == 0 || subshell_environment) && i == js.j_jobslots && js.j_jobslots >= MAX_JOBS_IN_ARRAY) - i = compact_jobs_list (0); - - /* If we can't compact, reallocate */ - if (i == js.j_jobslots) - { - js.j_jobslots += JOB_SLOTS; - jobs = (JOB **)xrealloc (jobs, (js.j_jobslots * sizeof (JOB *))); - - for (j = i; j < js.j_jobslots; j++) - jobs[j] = (JOB *)NULL; - } - - /* Add the current pipeline to the job list. */ - if (the_pipeline) - { - register PROCESS *p; - int any_running, any_stopped, n; - - newjob = (JOB *)xmalloc (sizeof (JOB)); - - for (n = 1, p = the_pipeline; p->next != the_pipeline; n++, p = p->next) - ; - p->next = (PROCESS *)NULL; - newjob->pipe = REVERSE_LIST (the_pipeline, PROCESS *); - for (p = newjob->pipe; p->next; p = p->next) - ; - p->next = newjob->pipe; - - the_pipeline = (PROCESS *)NULL; - newjob->pgrp = pipeline_pgrp; - pipeline_pgrp = 0; - - newjob->flags = 0; - - /* Flag to see if in another pgrp. */ - if (job_control) - newjob->flags |= J_JOBCONTROL; - - /* Set the state of this pipeline. */ - p = newjob->pipe; - any_running = any_stopped = 0; - do - { - any_running |= PRUNNING (p); - any_stopped |= PSTOPPED (p); - p = p->next; - } - while (p != newjob->pipe); - - newjob->state = any_running ? JRUNNING : (any_stopped ? JSTOPPED : JDEAD); - newjob->wd = job_working_directory (); - newjob->deferred = deferred; - - newjob->j_cleanup = (sh_vptrfunc_t *)NULL; - newjob->cleanarg = (PTR_T) NULL; - - jobs[i] = newjob; - if (newjob->state == JDEAD && (newjob->flags & J_FOREGROUND)) - setjstatus (i); - if (newjob->state == JDEAD) - { - js.c_reaped += n; /* wouldn't have been done since this was not part of a job */ - js.j_ndead++; - } - js.c_injobs += n; - - js.j_lastj = i; - js.j_njobs++; - } - else - newjob = (JOB *)NULL; - - if (newjob) - js.j_lastmade = newjob; - - if (async) - { - if (newjob) - { - newjob->flags &= ~J_FOREGROUND; - newjob->flags |= J_ASYNC; - js.j_lastasync = newjob; - } - reset_current (); - } - else - { - if (newjob) - { - newjob->flags |= J_FOREGROUND; - /* - * !!!!! NOTE !!!!! (chet@ins.cwru.edu) - * - * The currently-accepted job control wisdom says to set the - * terminal's process group n+1 times in an n-step pipeline: - * once in the parent and once in each child. This is where - * the parent gives it away. - * - * Don't give the terminal away if this shell is an asynchronous - * subshell. - * - */ - if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0) - give_terminal_to (newjob->pgrp, 0); - } - } - - stop_making_children (); - UNBLOCK_CHILD (oset); - return (js.j_current); -} - -/* Functions to manage the list of exited background pids whose status has - been saved. */ - -static struct pidstat * -bgp_alloc (pid, status) - pid_t pid; - int status; -{ - struct pidstat *ps; - - ps = (struct pidstat *)xmalloc (sizeof (struct pidstat)); - ps->pid = pid; - ps->status = status; - ps->next = (struct pidstat *)0; - return ps; -} - -static struct pidstat * -bgp_add (pid, status) - pid_t pid; - int status; -{ - struct pidstat *ps; - - ps = bgp_alloc (pid, status); - - if (bgpids.list == 0) - { - bgpids.list = bgpids.end = ps; - bgpids.npid = 0; /* just to make sure */ - } - else - { - bgpids.end->next = ps; - bgpids.end = ps; - } - bgpids.npid++; - - if (bgpids.npid > js.c_childmax) - bgp_prune (); - - return ps; -} - -static int -bgp_delete (pid) - pid_t pid; -{ - struct pidstat *prev, *p; - - for (prev = p = bgpids.list; p; prev = p, p = p->next) - if (p->pid == pid) - { - prev->next = p->next; /* remove from list */ - break; - } - - if (p == 0) - return 0; /* not found */ - -#if defined (DEBUG) - itrace("bgp_delete: deleting %d", pid); -#endif - - /* Housekeeping in the border cases. */ - if (p == bgpids.list) - bgpids.list = bgpids.list->next; - else if (p == bgpids.end) - bgpids.end = prev; - - bgpids.npid--; - if (bgpids.npid == 0) - bgpids.list = bgpids.end = 0; - else if (bgpids.npid == 1) - bgpids.end = bgpids.list; /* just to make sure */ - - free (p); - return 1; -} - -/* Clear out the list of saved statuses */ -static void -bgp_clear () -{ - struct pidstat *ps, *p; - - for (ps = bgpids.list; ps; ) - { - p = ps; - ps = ps->next; - free (p); - } - bgpids.list = bgpids.end = 0; - bgpids.npid = 0; -} - -/* Search for PID in the list of saved background pids; return its status if - found. If not found, return -1. */ -static int -bgp_search (pid) - pid_t pid; -{ - struct pidstat *ps; - - for (ps = bgpids.list ; ps; ps = ps->next) - if (ps->pid == pid) - return ps->status; - return -1; -} - -static void -bgp_prune () -{ - struct pidstat *ps; - - while (bgpids.npid > js.c_childmax) - { - ps = bgpids.list; - bgpids.list = bgpids.list->next; - free (ps); - bgpids.npid--; - } -} - -/* Reset the values of js.j_lastj and js.j_firstj after one or both have - been deleted. The caller should check whether js.j_njobs is 0 before - calling this. This wraps around, but the rest of the code does not. At - this point, it should not matter. */ -static void -reset_job_indices () -{ - int old; - - if (jobs[js.j_firstj] == 0) - { - old = js.j_firstj++; - if (old >= js.j_jobslots) - old = js.j_jobslots - 1; - while (js.j_firstj != old) - { - if (js.j_firstj >= js.j_jobslots) - js.j_firstj = 0; - if (jobs[js.j_firstj] || js.j_firstj == old) /* needed if old == 0 */ - break; - js.j_firstj++; - } - if (js.j_firstj == old) - js.j_firstj = js.j_lastj = js.j_njobs = 0; - } - if (jobs[js.j_lastj] == 0) - { - old = js.j_lastj--; - if (old < 0) - old = 0; - while (js.j_lastj != old) - { - if (js.j_lastj < 0) - js.j_lastj = js.j_jobslots - 1; - if (jobs[js.j_lastj] || js.j_lastj == old) /* needed if old == js.j_jobslots */ - break; - js.j_lastj--; - } - if (js.j_lastj == old) - js.j_firstj = js.j_lastj = js.j_njobs = 0; - } -} - -/* Delete all DEAD jobs that the user had received notification about. */ -static void -cleanup_dead_jobs () -{ - register int i; - int os; - - if (js.j_jobslots == 0 || jobs_list_frozen) - return; - - QUEUE_SIGCHLD(os); - - /* XXX could use js.j_firstj and js.j_lastj here */ - for (i = 0; i < js.j_jobslots; i++) - { -#if defined (DEBUG) - if (i < js.j_firstj && jobs[i]) - itrace("cleanup_dead_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); - if (i > js.j_lastj && jobs[i]) - itrace("cleanup_dead_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif - - if (jobs[i] && DEADJOB (i) && IS_NOTIFIED (i)) - delete_job (i, 0); - } - UNQUEUE_SIGCHLD(os); -} - -static int -processes_in_job (job) -{ - int nproc; - register PROCESS *p; - - nproc = 0; - p = jobs[job]->pipe; - do - { - p = p->next; - nproc++; - } - while (p != jobs[job]->pipe); - - return nproc; -} - -static void -delete_old_job (pid) - pid_t pid; -{ - PROCESS *p; - int job; - - job = find_job (pid, 0, &p); - if (job != NO_JOB) - { -#ifdef DEBUG - itrace ("delete_old_job: found pid %d in job %d with state %d", pid, job, jobs[job]->state); -#endif - if (JOBSTATE (job) == JDEAD) - delete_job (job, DEL_NOBGPID); - else - { - 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 - jobs. Heuristics are used to minimize the number of new reallocs. */ -static void -realloc_jobs_list () -{ - sigset_t set, oset; - int nsize, i, j, ncur, nprev; - JOB **nlist; - - ncur = nprev = NO_JOB; - nsize = ((js.j_njobs + JOB_SLOTS - 1) / JOB_SLOTS); - nsize *= JOB_SLOTS; - i = js.j_njobs % JOB_SLOTS; - if (i == 0 || i > (JOB_SLOTS >> 1)) - nsize += JOB_SLOTS; - - BLOCK_CHILD (set, oset); - nlist = (js.j_jobslots == nsize) ? jobs : (JOB **) xmalloc (nsize * sizeof (JOB *)); - - js.c_reaped = js.j_ndead = 0; - for (i = j = 0; i < js.j_jobslots; i++) - if (jobs[i]) - { - if (i == js.j_current) - ncur = j; - if (i == js.j_previous) - nprev = j; - nlist[j++] = jobs[i]; - if (jobs[i]->state == JDEAD) - { - js.j_ndead++; - js.c_reaped += processes_in_job (i); - } - } - -#if 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); - itrace ("realloc_jobs_list: js.j_ndead %d js.c_reaped %d", js.j_ndead, js.c_reaped); -#endif - - js.j_firstj = 0; - js.j_lastj = (j > 0) ? j - 1 : 0; - js.j_njobs = j; - js.j_jobslots = nsize; - - /* Zero out remaining slots in new jobs list */ - for ( ; j < nsize; j++) - nlist[j] = (JOB *)NULL; - - if (jobs != nlist) - { - free (jobs); - jobs = nlist; - } - - if (ncur != NO_JOB) - js.j_current = ncur; - if (nprev != NO_JOB) - js.j_previous = nprev; - - /* Need to reset these */ - if (js.j_current == NO_JOB || js.j_previous == NO_JOB || js.j_current > js.j_lastj || js.j_previous > js.j_lastj) - reset_current (); - -#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); -} - -/* Compact the jobs list by removing dead jobs. Assumed that we have filled - the jobs array to some predefined maximum. Called when the shell is not - the foreground process (subshell_environment != 0). Returns the first - available slot in the compacted list. If that value is js.j_jobslots, then - the list needs to be reallocated. The jobs array may be in new memory if - this returns > 0 and < js.j_jobslots. FLAGS is reserved for future use. */ -static int -compact_jobs_list (flags) - int flags; -{ - if (js.j_jobslots == 0 || jobs_list_frozen) - return js.j_jobslots; - - reap_dead_jobs (); - realloc_jobs_list (); - -#ifdef DEBUG - itrace("compact_jobs_list: returning %d", (js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0); -#endif - - return ((js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0); -} - -/* Delete the job at INDEX from the job list. Must be called - with SIGCHLD blocked. */ -void -delete_job (job_index, dflags) - int job_index, dflags; -{ - register JOB *temp; - PROCESS *proc; - int ndel; - - if (js.j_jobslots == 0 || jobs_list_frozen) - return; - - if ((dflags & DEL_WARNSTOPPED) && subshell_environment == 0 && STOPPED (job_index)) - internal_warning (_("deleting stopped job %d with process group %ld"), job_index+1, (long)jobs[job_index]->pgrp); - temp = jobs[job_index]; - if (temp == 0) - return; - - if ((dflags & DEL_NOBGPID) == 0) - { - proc = find_last_proc (job_index, 0); - /* Could do this just for J_ASYNC jobs, but we save all. */ - if (proc) - bgp_add (proc->pid, process_exit_status (proc->status)); - } - - jobs[job_index] = (JOB *)NULL; - if (temp == js.j_lastmade) - js.j_lastmade = 0; - else if (temp == js.j_lastasync) - js.j_lastasync = 0; - - free (temp->wd); - ndel = discard_pipeline (temp->pipe); - - js.c_injobs -= ndel; - if (temp->state == JDEAD) - { - js.c_reaped -= ndel; - js.j_ndead--; - if (js.c_reaped < 0) - { -#ifdef DEBUG - itrace("delete_job (%d pgrp %d): js.c_reaped (%d) < 0 ndel = %d js.j_ndead = %d", job_index, temp->pgrp, js.c_reaped, ndel, js.j_ndead); -#endif - js.c_reaped = 0; - } - } - - if (temp->deferred) - dispose_command (temp->deferred); - - free (temp); - - js.j_njobs--; - if (js.j_njobs == 0) - js.j_firstj = js.j_lastj = 0; - else if (jobs[js.j_firstj] == 0 || jobs[js.j_lastj] == 0) - reset_job_indices (); - - if (job_index == js.j_current || job_index == js.j_previous) - reset_current (); -} - -/* Must be called with SIGCHLD blocked. */ -void -nohup_job (job_index) - int job_index; -{ - register JOB *temp; - - if (js.j_jobslots == 0) - return; - - if (temp = jobs[job_index]) - temp->flags |= J_NOHUP; -} - -/* Get rid of the data structure associated with a process chain. */ -static int -discard_pipeline (chain) - register PROCESS *chain; -{ - register PROCESS *this, *next; - int n; - - this = chain; - n = 0; - do - { - next = this->next; - FREE (this->command); - free (this); - n++; - this = next; - } - while (this != chain); - - return n; -} - -/* Add this process to the chain being built in the_pipeline. - NAME is the command string that will be exec'ed later. - PID is the process id of the child. */ -static void -add_process (name, pid) - char *name; - pid_t pid; -{ - PROCESS *t, *p; - -#if defined (RECYCLES_PIDS) - int j; - p = find_process (pid, 0, &j); - if (p) - { -# ifdef DEBUG - if (j == NO_JOB) - internal_warning (_("add_process: process %5ld (%s) in the_pipeline"), (long)p->pid, p->command); -# endif - if (PALIVE (p)) - internal_warning (_("add_process: pid %5ld (%s) marked as still alive"), (long)p->pid, p->command); - p->running = PS_RECYCLED; /* mark as recycled */ - } -#endif - - t = (PROCESS *)xmalloc (sizeof (PROCESS)); - t->next = the_pipeline; - t->pid = pid; - WSTATUS (t->status) = 0; - t->running = PS_RUNNING; - t->command = name; - the_pipeline = t; - - if (t->next == 0) - t->next = t; - else - { - p = t->next; - while (p->next != t->next) - p = p->next; - p->next = t; - } -} - -#if 0 -/* Take the last job and make it the first job. Must be called with - SIGCHLD blocked. */ -int -rotate_the_pipeline () -{ - PROCESS *p; - - if (the_pipeline->next == the_pipeline) - return; - for (p = the_pipeline; p->next != the_pipeline; p = p->next) - ; - the_pipeline = p; -} - -/* Reverse the order of the processes in the_pipeline. Must be called with - SIGCHLD blocked. */ -int -reverse_the_pipeline () -{ - PROCESS *p, *n; - - if (the_pipeline->next == the_pipeline) - return; - - for (p = the_pipeline; p->next != the_pipeline; p = p->next) - ; - p->next = (PROCESS *)NULL; - - n = REVERSE_LIST (the_pipeline, PROCESS *); - - the_pipeline = n; - for (p = the_pipeline; p->next; p = p->next) - ; - p->next = the_pipeline; -} -#endif - -/* Map FUNC over the list of jobs. If FUNC returns non-zero, - then it is time to stop mapping, and that is the return value - for map_over_jobs. FUNC is called with a JOB, arg1, arg2, - and INDEX. */ -static int -map_over_jobs (func, arg1, arg2) - sh_job_map_func_t *func; - int arg1, arg2; -{ - register int i; - int result; - sigset_t set, oset; - - if (js.j_jobslots == 0) - return 0; - - BLOCK_CHILD (set, oset); - - /* XXX could use js.j_firstj here */ - for (i = result = 0; i < js.j_jobslots; i++) - { -#if defined (DEBUG) - if (i < js.j_firstj && jobs[i]) - itrace("map_over_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); - if (i > js.j_lastj && jobs[i]) - itrace("map_over_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif - if (jobs[i]) - { - result = (*func)(jobs[i], arg1, arg2, i); - if (result) - break; - } - } - - UNBLOCK_CHILD (oset); - - return (result); -} - -/* Cause all the jobs in the current pipeline to exit. */ -void -terminate_current_pipeline () -{ - if (pipeline_pgrp && pipeline_pgrp != shell_pgrp) - { - killpg (pipeline_pgrp, SIGTERM); - killpg (pipeline_pgrp, SIGCONT); - } -} - -/* Cause all stopped jobs to exit. */ -void -terminate_stopped_jobs () -{ - register int i; - - /* XXX could use js.j_firstj here */ - for (i = 0; i < js.j_jobslots; i++) - { - if (jobs[i] && STOPPED (i)) - { - killpg (jobs[i]->pgrp, SIGTERM); - killpg (jobs[i]->pgrp, SIGCONT); - } - } -} - -/* Cause all jobs, running or stopped, to receive a hangup signal. If - a job is marked J_NOHUP, don't send the SIGHUP. */ -void -hangup_all_jobs () -{ - register int i; - - /* XXX could use js.j_firstj here */ - for (i = 0; i < js.j_jobslots; i++) - { - if (jobs[i]) - { - if (jobs[i]->flags & J_NOHUP) - continue; - killpg (jobs[i]->pgrp, SIGHUP); - if (STOPPED (i)) - killpg (jobs[i]->pgrp, SIGCONT); - } - } -} - -void -kill_current_pipeline () -{ - stop_making_children (); - start_pipeline (); -} - -/* Return the pipeline that PID belongs to. Note that the pipeline - doesn't have to belong to a job. Must be called with SIGCHLD blocked. - If JOBP is non-null, return the index of the job containing PID. */ -static PROCESS * -find_pipeline (pid, alive_only, jobp) - pid_t pid; - int alive_only; - int *jobp; /* index into jobs list or NO_JOB */ -{ - int job; - PROCESS *p; - - /* See if this process is in the pipeline that we are building. */ - if (jobp) - *jobp = NO_JOB; - if (the_pipeline) - { - p = the_pipeline; - do - { - /* Return it if we found it. Don't ever return a recycled pid. */ - if (p->pid == pid && ((alive_only == 0 && PRECYCLED(p) == 0) || PALIVE(p))) - return (p); - - p = p->next; - } - while (p != the_pipeline); - } - - job = find_job (pid, alive_only, &p); - if (jobp) - *jobp = job; - return (job == NO_JOB) ? (PROCESS *)NULL : jobs[job]->pipe; -} - -/* Return the PROCESS * describing PID. If JOBP is non-null return the index - into the jobs array of the job containing PID. Must be called with - SIGCHLD blocked. */ -static PROCESS * -find_process (pid, alive_only, jobp) - pid_t pid; - int alive_only; - int *jobp; /* index into jobs list or NO_JOB */ -{ - PROCESS *p; - - p = find_pipeline (pid, alive_only, jobp); - while (p && p->pid != pid) - p = p->next; - return p; -} - -/* Return the job index that PID belongs to, or NO_JOB if it doesn't - belong to any job. Must be called with SIGCHLD blocked. */ -static int -find_job (pid, alive_only, procp) - pid_t pid; - int alive_only; - PROCESS **procp; -{ - register int i; - PROCESS *p; - - /* XXX could use js.j_firstj here, and should check js.j_lastj */ - for (i = 0; i < js.j_jobslots; i++) - { -#if defined (DEBUG) - if (i < js.j_firstj && jobs[i]) - itrace("find_job: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); - if (i > js.j_lastj && jobs[i]) - itrace("find_job: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif - if (jobs[i]) - { - p = jobs[i]->pipe; - - do - { - if (p->pid == pid && ((alive_only == 0 && PRECYCLED(p) == 0) || PALIVE(p))) - { - if (procp) - *procp = p; - return (i); - } - - p = p->next; - } - while (p != jobs[i]->pipe); - } - } - - return (NO_JOB); -} - -/* Find a job given a PID. If BLOCK is non-zero, block SIGCHLD as - required by find_job. */ -int -get_job_by_pid (pid, block) - pid_t pid; - int block; -{ - int job; - sigset_t set, oset; - - if (block) - BLOCK_CHILD (set, oset); - - job = find_job (pid, 0, NULL); - - if (block) - UNBLOCK_CHILD (oset); - - return job; -} - -/* Print descriptive information about the job with leader pid PID. */ -void -describe_pid (pid) - pid_t pid; -{ - int job; - sigset_t set, oset; - - BLOCK_CHILD (set, oset); - - job = find_job (pid, 0, NULL); - - if (job != NO_JOB) - fprintf (stderr, "[%d] %ld\n", job + 1, (long)pid); - else - programming_error (_("describe_pid: %ld: no such pid"), (long)pid); - - UNBLOCK_CHILD (oset); -} - -static char * -j_strsignal (s) - int s; -{ - char *x; - - x = strsignal (s); - if (x == 0) - { - x = retcode_name_buffer; - sprintf (x, _("Signal %d"), s); - } - return x; -} - -static char * -printable_job_status (j, p, format) - int j; - PROCESS *p; - int format; -{ - static char *temp; - int es; - - temp = _("Done"); - - if (STOPPED (j) && format == 0) - { - if (posixly_correct == 0 || p == 0 || (WIFSTOPPED (p->status) == 0)) - temp = _("Stopped"); - else - { - temp = retcode_name_buffer; - sprintf (temp, _("Stopped(%s)"), signal_name (WSTOPSIG (p->status))); - } - } - else if (RUNNING (j)) - temp = _("Running"); - else - { - if (WIFSTOPPED (p->status)) - temp = j_strsignal (WSTOPSIG (p->status)); - else if (WIFSIGNALED (p->status)) - temp = j_strsignal (WTERMSIG (p->status)); - else if (WIFEXITED (p->status)) - { - temp = retcode_name_buffer; - es = WEXITSTATUS (p->status); - if (es == 0) - strcpy (temp, _("Done")); - else if (posixly_correct) - sprintf (temp, _("Done(%d)"), es); - else - sprintf (temp, _("Exit %d"), es); - } - else - temp = _("Unknown status"); - } - - return temp; -} - -/* This is the way to print out information on a job if you - know the index. FORMAT is: - - JLIST_NORMAL) [1]+ Running emacs - JLIST_LONG ) [1]+ 2378 Running emacs - -1 ) [1]+ 2378 emacs - - JLIST_NORMAL) [1]+ Stopped ls | more - JLIST_LONG ) [1]+ 2369 Stopped ls - 2367 | more - JLIST_PID_ONLY) - Just list the pid of the process group leader (really - the process group). - JLIST_CHANGED_ONLY) - Use format JLIST_NORMAL, but list only jobs about which - the user has not been notified. */ - -/* Print status for pipeline P. If JOB_INDEX is >= 0, it is the index into - the JOBS array corresponding to this pipeline. FORMAT is as described - above. Must be called with SIGCHLD blocked. - - If you're printing a pipeline that's not in the jobs array, like the - current pipeline as it's being created, pass -1 for JOB_INDEX */ -static void -print_pipeline (p, job_index, format, stream) - PROCESS *p; - int job_index, format; - FILE *stream; -{ - PROCESS *first, *last, *show; - int es, name_padding; - char *temp; - - if (p == 0) - return; - - first = last = p; - while (last->next != first) - last = last->next; - - for (;;) - { - if (p != first) - fprintf (stream, format ? " " : " |"); - - if (format != JLIST_STANDARD) - fprintf (stream, "%5ld", (long)p->pid); - - fprintf (stream, " "); - - if (format > -1 && job_index >= 0) - { - show = format ? p : last; - temp = printable_job_status (job_index, show, format); - - if (p != first) - { - if (format) - { - if (show->running == first->running && - WSTATUS (show->status) == WSTATUS (first->status)) - temp = ""; - } - else - temp = (char *)NULL; - } - - if (temp) - { - fprintf (stream, "%s", temp); - - es = STRLEN (temp); - if (es == 0) - es = 2; /* strlen ("| ") */ - name_padding = LONGEST_SIGNAL_DESC - es; - - fprintf (stream, "%*s", name_padding, ""); - - if ((WIFSTOPPED (show->status) == 0) && - (WIFCONTINUED (show->status) == 0) && - WIFCORED (show->status)) - fprintf (stream, _("(core dumped) ")); - } - } - - if (p != first && format) - fprintf (stream, "| "); - - if (p->command) - fprintf (stream, "%s", p->command); - - if (p == last && job_index >= 0) - { - temp = current_working_directory (); - - if (RUNNING (job_index) && (IS_FOREGROUND (job_index) == 0)) - fprintf (stream, " &"); - - if (strcmp (temp, jobs[job_index]->wd) != 0) - fprintf (stream, - _(" (wd: %s)"), polite_directory_format (jobs[job_index]->wd)); - } - - if (format || (p == last)) - { - /* We need to add a CR only if this is an interactive shell, and - we're reporting the status of a completed job asynchronously. - We can't really check whether this particular job is being - reported asynchronously, so just add the CR if the shell is - currently interactive and asynchronous notification is enabled. */ - if (asynchronous_notification && interactive) - fprintf (stream, "\r\n"); - else - fprintf (stream, "\n"); - } - - if (p == last) - break; - p = p->next; - } - fflush (stream); -} - -/* Print information to STREAM about jobs[JOB_INDEX] according to FORMAT. - Must be called with SIGCHLD blocked or queued with queue_sigchld */ -static void -pretty_print_job (job_index, format, stream) - int job_index, format; - FILE *stream; -{ - register PROCESS *p; - - /* Format only pid information about the process group leader? */ - if (format == JLIST_PID_ONLY) - { - fprintf (stream, "%ld\n", (long)jobs[job_index]->pipe->pid); - return; - } - - if (format == JLIST_CHANGED_ONLY) - { - if (IS_NOTIFIED (job_index)) - return; - format = JLIST_STANDARD; - } - - if (format != JLIST_NONINTERACTIVE) - fprintf (stream, "[%d]%c ", job_index + 1, - (job_index == js.j_current) ? '+': - (job_index == js.j_previous) ? '-' : ' '); - - if (format == JLIST_NONINTERACTIVE) - format = JLIST_LONG; - - p = jobs[job_index]->pipe; - - print_pipeline (p, job_index, format, stream); - - /* We have printed information about this job. When the job's - status changes, waitchld () sets the notification flag to 0. */ - jobs[job_index]->flags |= J_NOTIFIED; -} - -static int -print_job (job, format, state, job_index) - JOB *job; - int format, state, job_index; -{ - if (state == -1 || (JOB_STATE)state == job->state) - pretty_print_job (job_index, format, stdout); - return (0); -} - -void -list_one_job (job, format, ignore, job_index) - JOB *job; - int format, ignore, job_index; -{ - pretty_print_job (job_index, format, stdout); -} - -void -list_stopped_jobs (format) - int format; -{ - cleanup_dead_jobs (); - map_over_jobs (print_job, format, (int)JSTOPPED); -} - -void -list_running_jobs (format) - int format; -{ - cleanup_dead_jobs (); - map_over_jobs (print_job, format, (int)JRUNNING); -} - -/* List jobs. If FORMAT is non-zero, then the long form of the information - is printed, else just a short version. */ -void -list_all_jobs (format) - int format; -{ - cleanup_dead_jobs (); - map_over_jobs (print_job, format, -1); -} - -/* Fork, handling errors. Returns the pid of the newly made child, or 0. - COMMAND is just for remembering the name of the command; we don't do - anything else with it. ASYNC_P says what to do with the tty. If - non-zero, then don't give it away. */ -pid_t -make_child (command, async_p) - char *command; - int async_p; -{ - int forksleep; - sigset_t set, oset; - pid_t pid; - - sigemptyset (&set); - sigaddset (&set, SIGCHLD); - sigaddset (&set, SIGINT); - sigemptyset (&oset); - sigprocmask (SIG_BLOCK, &set, &oset); - - making_children (); - -#if defined (BUFFERED_INPUT) - /* If default_buffered_input is active, we are reading a script. If - the command is asynchronous, we have already duplicated /dev/null - as fd 0, but have not changed the buffered stream corresponding to - the old fd 0. We don't want to sync the stream in this case. */ - if (default_buffered_input != -1 && - (!async_p || default_buffered_input > 0)) - sync_buffered_stream (default_buffered_input); -#endif /* BUFFERED_INPUT */ - - /* Create the child, handle severe errors. Retry on EAGAIN. */ - while ((pid = fork ()) < 0 && errno == EAGAIN && forksleep < FORKSLEEP_MAX) - { - sys_error ("fork: retry"); - if (sleep (forksleep) != 0) - break; - forksleep <<= 1; - } - - if (pid < 0) - { - sys_error ("fork"); - - /* Kill all of the processes in the current pipeline. */ - terminate_current_pipeline (); - - /* Discard the current pipeline, if any. */ - if (the_pipeline) - kill_current_pipeline (); - - throw_to_top_level (); /* Reset signals, etc. */ - } - - if (pid == 0) - { - /* In the child. Give this child the right process group, set the - signals to the default state for a new process. */ - pid_t mypid; - - mypid = getpid (); -#if defined (BUFFERED_INPUT) - /* Close default_buffered_input if it's > 0. We don't close it if it's - 0 because that's the file descriptor used when redirecting input, - and it's wrong to close the file in that case. */ - unset_bash_input (0); -#endif /* BUFFERED_INPUT */ - - /* Restore top-level signal mask. */ - sigprocmask (SIG_SETMASK, &top_level_mask, (sigset_t *)NULL); - - if (job_control) - { - /* All processes in this pipeline belong in the same - process group. */ - - if (pipeline_pgrp == 0) /* This is the first child. */ - pipeline_pgrp = mypid; - - /* Check for running command in backquotes. */ - if (pipeline_pgrp == shell_pgrp) - ignore_tty_job_signals (); - else - default_tty_job_signals (); - - /* Set the process group before trying to mess with the terminal's - process group. This is mandated by POSIX. */ - /* This is in accordance with the Posix 1003.1 standard, - section B.7.2.4, which says that trying to set the terminal - process group with tcsetpgrp() to an unused pgrp value (like - this would have for the first child) is an error. Section - B.4.3.3, p. 237 also covers this, in the context of job control - shells. */ - if (setpgid (mypid, pipeline_pgrp) < 0) - sys_error (_("child setpgid (%ld to %ld)"), (long)mypid, (long)pipeline_pgrp); - - /* By convention (and assumption above), if - pipeline_pgrp == shell_pgrp, we are making a child for - command substitution. - In this case, we don't want to give the terminal to the - shell's process group (we could be in the middle of a - pipeline, for example). */ - if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&SUBSHELL_ASYNC) == 0)) - give_terminal_to (pipeline_pgrp, 0); - -#if defined (PGRP_PIPE) - if (pipeline_pgrp == mypid) - pipe_read (pgrp_pipe); -#endif - } - else /* Without job control... */ - { - if (pipeline_pgrp == 0) - pipeline_pgrp = shell_pgrp; - - /* If these signals are set to SIG_DFL, we encounter the curious - situation of an interactive ^Z to a running process *working* - and stopping the process, but being unable to do anything with - that process to change its state. On the other hand, if they - are set to SIG_IGN, jobs started from scripts do not stop when - the shell running the script gets a SIGTSTP and stops. */ - - default_tty_job_signals (); - } - -#if defined (PGRP_PIPE) - /* Release the process group pipe, since our call to setpgid () - is done. The last call to sh_closepipe is done in stop_pipeline. */ - sh_closepipe (pgrp_pipe); -#endif /* PGRP_PIPE */ - -#if 0 - /* Don't set last_asynchronous_pid in the child */ - if (async_p) - last_asynchronous_pid = mypid; /* XXX */ - else -#endif -#if defined (RECYCLES_PIDS) - if (last_asynchronous_pid == mypid) - /* Avoid pid aliasing. 1 seems like a safe, unusual pid value. */ - last_asynchronous_pid = 1; -#endif - } - else - { - /* In the parent. Remember the pid of the child just created - as the proper pgrp if this is the first child. */ - - if (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) - { - if (pipeline_pgrp == 0) - { - pipeline_pgrp = pid; - /* Don't twiddle terminal pgrps in the parent! This is the bug, - not the good thing of twiddling them in the child! */ - /* give_terminal_to (pipeline_pgrp, 0); */ - } - /* This is done on the recommendation of the Rationale section of - the POSIX 1003.1 standard, where it discusses job control and - shells. It is done to avoid possible race conditions. (Ref. - 1003.1 Rationale, section B.4.3.3, page 236). */ - setpgid (pid, pipeline_pgrp); - } - else - { - if (pipeline_pgrp == 0) - pipeline_pgrp = shell_pgrp; - } - - /* Place all processes into the jobs array regardless of the - state of job_control. */ - add_process (command, pid); - - if (async_p) - last_asynchronous_pid = pid; -#if defined (RECYCLES_PIDS) - else if (last_asynchronous_pid == pid) - /* Avoid pid aliasing. 1 seems like a safe, unusual pid value. */ - last_asynchronous_pid = 1; -#endif - - 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 - statuses, unless the system recycles pids. */ - if ((js.c_reaped + bgpids.npid) >= js.c_childmax) -#endif - bgp_delete (pid); /* new process, discard any saved status */ - - last_made_pid = pid; - - /* keep stats */ - js.c_totforked++; - js.c_living++; - - /* Unblock SIGINT and SIGCHLD unless creating a pipeline, in which case - SIGCHLD remains blocked until all commands in the pipeline have been - created. */ - sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); - } - - return (pid); -} - -/* These two functions are called only in child processes. */ -void -ignore_tty_job_signals () -{ - set_signal_handler (SIGTSTP, SIG_IGN); - set_signal_handler (SIGTTIN, SIG_IGN); - set_signal_handler (SIGTTOU, SIG_IGN); -} - -void -default_tty_job_signals () -{ - set_signal_handler (SIGTSTP, SIG_DFL); - set_signal_handler (SIGTTIN, SIG_DFL); - set_signal_handler (SIGTTOU, SIG_DFL); -} - -/* When we end a job abnormally, or if we stop a job, we set the tty to the - state kept in here. When a job ends normally, we set the state in here - to the state of the tty. */ - -static TTYSTRUCT shell_tty_info; - -#if defined (NEW_TTY_DRIVER) -static struct tchars shell_tchars; -static struct ltchars shell_ltchars; -#endif /* NEW_TTY_DRIVER */ - -#if defined (NEW_TTY_DRIVER) && defined (DRAIN_OUTPUT) -/* Since the BSD tty driver does not allow us to change the tty modes - while simultaneously waiting for output to drain and preserving - typeahead, we have to drain the output ourselves before calling - ioctl. We cheat by finding the length of the output queue, and - using select to wait for an appropriate length of time. This is - a hack, and should be labeled as such (it's a hastily-adapted - mutation of a `usleep' implementation). It's only reason for - existing is the flaw in the BSD tty driver. */ - -static int ttspeeds[] = -{ - 0, 50, 75, 110, 134, 150, 200, 300, 600, 1200, - 1800, 2400, 4800, 9600, 19200, 38400 -}; - -static void -draino (fd, ospeed) - int fd, ospeed; -{ - register int delay = ttspeeds[ospeed]; - int n; - - if (!delay) - return; - - while ((ioctl (fd, TIOCOUTQ, &n) == 0) && n) - { - if (n > (delay / 100)) - { - struct timeval tv; - - n *= 10; /* 2 bits more for conservativeness. */ - tv.tv_sec = n / delay; - tv.tv_usec = ((n % delay) * 1000000) / delay; - select (fd, (fd_set *)0, (fd_set *)0, (fd_set *)0, &tv); - } - else - break; - } -} -#endif /* NEW_TTY_DRIVER && DRAIN_OUTPUT */ - -/* Return the fd from which we are actually getting input. */ -#define input_tty() (shell_tty != -1) ? shell_tty : fileno (stderr) - -/* Fill the contents of shell_tty_info with the current tty info. */ -int -get_tty_state () -{ - int tty; - - tty = input_tty (); - if (tty != -1) - { -#if defined (NEW_TTY_DRIVER) - ioctl (tty, TIOCGETP, &shell_tty_info); - ioctl (tty, TIOCGETC, &shell_tchars); - ioctl (tty, TIOCGLTC, &shell_ltchars); -#endif /* NEW_TTY_DRIVER */ - -#if defined (TERMIO_TTY_DRIVER) - ioctl (tty, TCGETA, &shell_tty_info); -#endif /* TERMIO_TTY_DRIVER */ - -#if defined (TERMIOS_TTY_DRIVER) - if (tcgetattr (tty, &shell_tty_info) < 0) - { -#if 0 - /* Only print an error message if we're really interactive at - this time. */ - if (interactive) - sys_error ("[%ld: %d (%d)] tcgetattr", (long)getpid (), shell_level, tty); -#endif - return -1; - } -#endif /* TERMIOS_TTY_DRIVER */ - if (check_window_size) - get_new_window_size (0, (int *)0, (int *)0); - } - return 0; -} - -/* Make the current tty use the state in shell_tty_info. */ -int -set_tty_state () -{ - int tty; - - tty = input_tty (); - if (tty != -1) - { -#if defined (NEW_TTY_DRIVER) -# if defined (DRAIN_OUTPUT) - draino (tty, shell_tty_info.sg_ospeed); -# endif /* DRAIN_OUTPUT */ - ioctl (tty, TIOCSETN, &shell_tty_info); - ioctl (tty, TIOCSETC, &shell_tchars); - ioctl (tty, TIOCSLTC, &shell_ltchars); -#endif /* NEW_TTY_DRIVER */ - -#if defined (TERMIO_TTY_DRIVER) - ioctl (tty, TCSETAW, &shell_tty_info); -#endif /* TERMIO_TTY_DRIVER */ - -#if defined (TERMIOS_TTY_DRIVER) - if (tcsetattr (tty, TCSADRAIN, &shell_tty_info) < 0) - { - /* Only print an error message if we're really interactive at - this time. */ - if (interactive) - sys_error ("[%ld: %d (%d)] tcsetattr", (long)getpid (), shell_level, tty); - return -1; - } -#endif /* TERMIOS_TTY_DRIVER */ - } - return 0; -} - -/* Given an index into the jobs array JOB, return the PROCESS struct of the last - process in that job's pipeline. This is the one whose exit status - counts. Must be called with SIGCHLD blocked or queued. */ -static PROCESS * -find_last_proc (job, block) - int job; - int block; -{ - register PROCESS *p; - sigset_t set, oset; - - if (block) - BLOCK_CHILD (set, oset); - - p = jobs[job]->pipe; - while (p && p->next != jobs[job]->pipe) - p = p->next; - - if (block) - UNBLOCK_CHILD (oset); - - return (p); -} - -static pid_t -find_last_pid (job, block) - int job; - int block; -{ - PROCESS *p; - - p = find_last_proc (job, block); - /* Possible race condition here. */ - return p->pid; -} - -/* Wait for a particular child of the shell to finish executing. - This low-level function prints an error message if PID is not - a child of this shell. It returns -1 if it fails, or whatever - wait_for returns otherwise. If the child is not found in the - jobs table, it returns 127. */ -int -wait_for_single_pid (pid) - pid_t pid; -{ - register PROCESS *child; - sigset_t set, oset; - int r, job; - - BLOCK_CHILD (set, oset); - child = find_pipeline (pid, 0, (int *)NULL); - UNBLOCK_CHILD (oset); - - if (child == 0) - { - r = bgp_search (pid); - if (r >= 0) - return r; - } - - if (child == 0) - { - internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid); - return (127); - } - - r = wait_for (pid); - - /* POSIX.2: if we just waited for a job, we can remove it from the jobs - table. */ - BLOCK_CHILD (set, oset); - job = find_job (pid, 0, NULL); - if (job != NO_JOB && jobs[job] && DEADJOB (job)) - jobs[job]->flags |= J_NOTIFIED; - UNBLOCK_CHILD (oset); - - /* If running in posix mode, remove the job from the jobs table immediately */ - if (posixly_correct) - { - cleanup_dead_jobs (); - bgp_delete (pid); - } - - return r; -} - -/* Wait for all of the backgrounds of this shell to finish. */ -void -wait_for_background_pids () -{ - register int i, r, waited_for; - sigset_t set, oset; - pid_t pid; - - for (waited_for = 0;;) - { - BLOCK_CHILD (set, oset); - - /* find first running job; if none running in foreground, break */ - /* XXX could use js.j_firstj and js.j_lastj here */ - for (i = 0; i < js.j_jobslots; i++) - { -#if defined (DEBUG) - if (i < js.j_firstj && jobs[i]) - itrace("wait_for_background_pids: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); - if (i > js.j_lastj && jobs[i]) - itrace("wait_for_background_pids: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif - if (jobs[i] && RUNNING (i) && IS_FOREGROUND (i) == 0) - break; - } - if (i == js.j_jobslots) - { - UNBLOCK_CHILD (oset); - break; - } - - /* now wait for the last pid in that job. */ - pid = find_last_pid (i, 0); - UNBLOCK_CHILD (oset); - QUIT; - errno = 0; /* XXX */ - r = wait_for_single_pid (pid); - if (r == -1) - { - /* If we're mistaken about job state, compensate. */ - if (errno == ECHILD) - mark_all_jobs_as_dead (); - } - else - waited_for++; - } - - /* POSIX.2 says the shell can discard the statuses of all completed jobs if - `wait' is called with no arguments. */ - mark_dead_jobs_as_notified (1); - cleanup_dead_jobs (); - bgp_clear (); -} - -/* Make OLD_SIGINT_HANDLER the SIGINT signal handler. */ -#define INVALID_SIGNAL_HANDLER (SigHandler *)wait_for_background_pids -static SigHandler *old_sigint_handler = INVALID_SIGNAL_HANDLER; - -static void -restore_sigint_handler () -{ - if (old_sigint_handler != INVALID_SIGNAL_HANDLER) - { - set_signal_handler (SIGINT, old_sigint_handler); - old_sigint_handler = INVALID_SIGNAL_HANDLER; - } -} - -static int wait_sigint_received; - -/* Handle SIGINT while we are waiting for children in a script to exit. - The `wait' builtin should be interruptible, but all others should be - effectively ignored (i.e. not cause the shell to exit). */ -static sighandler -wait_sigint_handler (sig) - int sig; -{ - SigHandler *sigint_handler; - - if (interrupt_immediately || - (this_shell_builtin && this_shell_builtin == wait_builtin)) - { - last_command_exit_value = EXECUTION_FAILURE; - restore_sigint_handler (); - /* If we got a SIGINT while in `wait', and SIGINT is trapped, do - what POSIX.2 says (see builtins/wait.def for more info). */ - if (this_shell_builtin && this_shell_builtin == wait_builtin && - signal_is_trapped (SIGINT) && - ((sigint_handler = trap_to_sighandler (SIGINT)) == trap_handler)) - { - interrupt_immediately = 0; - trap_handler (SIGINT); /* set pending_traps[SIGINT] */ - wait_signal_received = SIGINT; - longjmp (wait_intr_buf, 1); - } - - ADDINTERRUPT; - QUIT; - } - - /* XXX - should this be interrupt_state? If it is, the shell will act - as if it got the SIGINT interrupt. */ - wait_sigint_received = 1; - - /* Otherwise effectively ignore the SIGINT and allow the running job to - be killed. */ - SIGRETURN (0); -} - -static int -process_exit_signal (status) - WAIT status; -{ - return (WIFSIGNALED (status) ? WTERMSIG (status) : 0); -} - -static int -process_exit_status (status) - WAIT status; -{ - if (WIFSIGNALED (status)) - return (128 + WTERMSIG (status)); - else if (WIFSTOPPED (status) == 0) - return (WEXITSTATUS (status)); - else - return (EXECUTION_SUCCESS); -} - -static WAIT -job_signal_status (job) - int job; -{ - register PROCESS *p; - WAIT s; - - p = jobs[job]->pipe; - do - { - s = p->status; - if (WIFSIGNALED(s) || WIFSTOPPED(s)) - break; - p = p->next; - } - while (p != jobs[job]->pipe); - - return s; -} - -/* Return the exit status of the last process in the pipeline for job JOB. - This is the exit status of the entire job. */ -static WAIT -raw_job_exit_status (job) - int job; -{ - register PROCESS *p; - int fail; - WAIT ret; - - if (pipefail_opt) - { - fail = 0; - p = jobs[job]->pipe; - do - { - if (WSTATUS (p->status) != EXECUTION_SUCCESS) - fail = WSTATUS(p->status); - p = p->next; - } - while (p != jobs[job]->pipe); - WSTATUS (ret) = fail; - return ret; - } - - for (p = jobs[job]->pipe; p->next != jobs[job]->pipe; p = p->next) - ; - return (p->status); -} - -/* Return the exit status of job JOB. This is the exit status of the last - (rightmost) process in the job's pipeline, modified if the job was killed - by a signal or stopped. */ -static int -job_exit_status (job) - int job; -{ - return (process_exit_status (raw_job_exit_status (job))); -} - -static int -job_exit_signal (job) - int job; -{ - return (process_exit_signal (raw_job_exit_status (job))); -} - -#define FIND_CHILD(pid, child) \ - do \ - { \ - child = find_pipeline (pid, 0, (int *)NULL); \ - if (child == 0) \ - { \ - give_terminal_to (shell_pgrp, 0); \ - UNBLOCK_CHILD (oset); \ - internal_error (_("wait_for: No record of process %ld"), (long)pid); \ - restore_sigint_handler (); \ - return (termination_state = 127); \ - } \ - } \ - while (0) - -/* Wait for pid (one of our children) to terminate, then - return the termination state. Returns 127 if PID is not found in - the jobs table. Returns -1 if waitchld() returns -1, indicating - that there are no unwaited-for child processes. */ -int -wait_for (pid) - pid_t pid; -{ - int job, termination_state, r; - WAIT s; - register PROCESS *child; - sigset_t set, oset; - register PROCESS *p; - - /* In the case that this code is interrupted, and we longjmp () out of it, - we are relying on the code in throw_to_top_level () to restore the - top-level signal mask. */ - BLOCK_CHILD (set, oset); - - /* Ignore interrupts while waiting for a job run without job control - to finish. We don't want the shell to exit if an interrupt is - received, only if one of the jobs run is killed via SIGINT. If - job control is not set, the job will be run in the same pgrp as - the shell, and the shell will see any signals the job gets. In - fact, we want this set every time the waiting shell and the waited- - for process are in the same process group, including command - substitution. */ - - /* This is possibly a race condition -- should it go in stop_pipeline? */ - wait_sigint_received = 0; - if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB)) - { - 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; - - if (interactive && job_control == 0) - QUIT; - - /* If we say wait_for (), then we have a record of this child somewhere. - If it and none of its peers are running, don't call waitchld(). */ - - job = NO_JOB; - do - { - FIND_CHILD (pid, child); - - /* If this child is part of a job, then we are really waiting for the - job to finish. Otherwise, we are waiting for the child to finish. - We check for JDEAD in case the job state has been set by waitchld - after receipt of a SIGCHLD. */ - if (job == NO_JOB) - job = find_job (pid, 0, NULL); - - /* waitchld() takes care of setting the state of the job. If the job - has already exited before this is called, sigchld_handler will have - called waitchld and the state will be set to JDEAD. */ - - if (PRUNNING(child) || (job != NO_JOB && RUNNING (job))) - { -#if defined (WAITPID_BROKEN) /* SCOv4 */ - sigset_t suspend_set; - sigemptyset (&suspend_set); - sigsuspend (&suspend_set); -#else /* !WAITPID_BROKEN */ -# if defined (MUST_UNBLOCK_CHLD) - struct sigaction act, oact; - sigset_t nullset, chldset; - - sigemptyset (&nullset); - sigemptyset (&chldset); - sigprocmask (SIG_SETMASK, &nullset, &chldset); - act.sa_handler = SIG_DFL; - sigemptyset (&act.sa_mask); - sigemptyset (&oact.sa_mask); - act.sa_flags = 0; - sigaction (SIGCHLD, &act, &oact); -# endif - queue_sigchld = 1; - r = waitchld (pid, 1); -# if defined (MUST_UNBLOCK_CHLD) - sigaction (SIGCHLD, &oact, (struct sigaction *)NULL); - sigprocmask (SIG_SETMASK, &chldset, (sigset_t *)NULL); -# endif - queue_sigchld = 0; - if (r == -1 && errno == ECHILD && this_shell_builtin == wait_builtin) - { - termination_state = -1; - goto wait_for_return; - } - - /* If child is marked as running, but waitpid() returns -1/ECHILD, - there is something wrong. Somewhere, wait should have returned - that child's pid. Mark the child as not running and the job, - if it exists, as JDEAD. */ - if (r == -1 && errno == ECHILD) - { - child->running = PS_DONE; - WSTATUS (child->status) = 0; /* XXX -- can't find true status */ - js.c_living = 0; /* no living child processes */ - if (job != NO_JOB) - { - jobs[job]->state = JDEAD; - js.c_reaped++; - js.j_ndead++; - } - } -#endif /* WAITPID_BROKEN */ - } - - /* If the shell is interactive, and job control is disabled, see - if the foreground process has died due to SIGINT and jump out - of the wait loop if it has. waitchld has already restored the - old SIGINT signal handler. */ - if (interactive && job_control == 0) - QUIT; - } - while (PRUNNING (child) || (job != NO_JOB && RUNNING (job))); - - /* The exit state of the command is either the termination state of the - child, or the termination state of the job. If a job, the status - of the last child in the pipeline is the significant one. If the command - or job was terminated by a signal, note that value also. */ - termination_state = (job != NO_JOB) ? job_exit_status (job) - : process_exit_status (child->status); - last_command_exit_signal = (job != NO_JOB) ? job_exit_signal (job) - : process_exit_signal (child->status); - - /* XXX */ - if ((job != NO_JOB && JOBSTATE (job) == JSTOPPED) || WIFSTOPPED (child->status)) - termination_state = 128 + WSTOPSIG (child->status); - - if (job == NO_JOB || IS_JOBCONTROL (job)) - { - /* XXX - under what circumstances is a job not present in the jobs - table (job == NO_JOB)? - 1. command substitution - - In the case of command substitution, at least, it's probably not - the right thing to give the terminal to the shell's process group, - even though there is code in subst.c:command_substitute to work - around it. - - Things that don't: - $PROMPT_COMMAND execution - process substitution - */ -#if 0 -if (job == NO_JOB) - itrace("wait_for: job == NO_JOB, giving the terminal to shell_pgrp (%ld)", (long)shell_pgrp); -#endif - give_terminal_to (shell_pgrp, 0); - } - - /* If the command did not exit cleanly, or the job is just - being stopped, then reset the tty state back to what it - was before this command. Reset the tty state and notify - the user of the job termination only if the shell is - interactive. Clean up any dead jobs in either case. */ - if (job != NO_JOB) - { - if (interactive_shell && subshell_environment == 0) - { - /* This used to use `child->status'. That's wrong, however, for - pipelines. `child' is the first process in the pipeline. It's - likely that the process we want to check for abnormal termination - or stopping is the last process in the pipeline, especially if - it's long-lived and the first process is short-lived. Since we - know we have a job here, we can check all the processes in this - job's pipeline and see if one of them stopped or terminated due - to a signal. We might want to change this later to just check - the last process in the pipeline. If no process exits due to a - signal, S is left as the status of the last job in the pipeline. */ - s = job_signal_status (job); - - if (WIFSIGNALED (s) || WIFSTOPPED (s)) - { - set_tty_state (); - - /* If the current job was stopped or killed by a signal, and - the user has requested it, get a possibly new window size */ - if (check_window_size && (job == js.j_current || IS_FOREGROUND (job))) - get_new_window_size (0, (int *)0, (int *)0); - } - else - get_tty_state (); - - /* If job control is enabled, the job was started with job - control, the job was the foreground job, and it was killed - by SIGINT, then print a newline to compensate for the kernel - printing the ^C without a trailing newline. */ - if (job_control && IS_JOBCONTROL (job) && IS_FOREGROUND (job) && - WIFSIGNALED (s) && WTERMSIG (s) == SIGINT) - { - /* If SIGINT is not trapped and the shell is in a for, while, - or until loop, act as if the shell received SIGINT as - well, so the loop can be broken. This doesn't call the - SIGINT signal handler; maybe it should. */ - if (signal_is_trapped (SIGINT) == 0 && loop_level) - ADDINTERRUPT; - else - { - putchar ('\n'); - fflush (stdout); - } - } - } - else if ((subshell_environment & SUBSHELL_COMSUB) && wait_sigint_received) - { - /* If waiting for a job in a subshell started to do command - substitution, simulate getting and being killed by the SIGINT to - pass the status back to our parent. */ - s = job_signal_status (job); - - if (WIFSIGNALED (s) && WTERMSIG (s) == SIGINT && signal_is_trapped (SIGINT) == 0) - { - UNBLOCK_CHILD (oset); - restore_sigint_handler (); - old_sigint_handler = set_signal_handler (SIGINT, SIG_DFL); - if (old_sigint_handler == SIG_IGN) - restore_sigint_handler (); - else - kill (getpid (), SIGINT); - } - } - - /* Moved here from set_job_status_and_cleanup, which is in the SIGCHLD - signal handler path */ - if (DEADJOB (job) && IS_FOREGROUND (job) /*&& subshell_environment == 0*/) - setjstatus (job); - - /* If this job is dead, notify the user of the status. If the shell - is interactive, this will display a message on the terminal. If - the shell is not interactive, make sure we turn on the notify bit - so we don't get an unwanted message about the job's termination, - and so delete_job really clears the slot in the jobs table. */ - notify_and_cleanup (); - } - -wait_for_return: - - UNBLOCK_CHILD (oset); - - /* Restore the original SIGINT signal handler before we return. */ - restore_sigint_handler (); - - return (termination_state); -} - -/* Wait for the last process in the pipeline for JOB. Returns whatever - wait_for returns: the last process's termination state or -1 if there - are no unwaited-for child processes or an error occurs. */ -int -wait_for_job (job) - int job; -{ - pid_t pid; - int r; - sigset_t set, oset; - - BLOCK_CHILD(set, oset); - if (JOBSTATE (job) == JSTOPPED) - internal_warning (_("wait_for_job: job %d is stopped"), job+1); - - pid = find_last_pid (job, 0); - UNBLOCK_CHILD(oset); - r = wait_for (pid); - - /* POSIX.2: we can remove the job from the jobs table if we just waited - for it. */ - BLOCK_CHILD (set, oset); - if (job != NO_JOB && jobs[job] && DEADJOB (job)) - jobs[job]->flags |= J_NOTIFIED; - UNBLOCK_CHILD (oset); - - return r; -} - -/* Print info about dead jobs, and then delete them from the list - of known jobs. This does not actually delete jobs when the - shell is not interactive, because the dead jobs are not marked - as notified. */ -void -notify_and_cleanup () -{ - if (jobs_list_frozen) - return; - - if (interactive || interactive_shell == 0 || sourcelevel) - notify_of_job_status (); - - cleanup_dead_jobs (); -} - -/* Make dead jobs disappear from the jobs array without notification. - This is used when the shell is not interactive. */ -void -reap_dead_jobs () -{ - mark_dead_jobs_as_notified (0); - cleanup_dead_jobs (); -} - -/* Return the next closest (chronologically) job to JOB which is in - STATE. STATE can be JSTOPPED, JRUNNING. NO_JOB is returned if - there is no next recent job. */ -static int -most_recent_job_in_state (job, state) - int job; - JOB_STATE state; -{ - register int i, result; - sigset_t set, oset; - - BLOCK_CHILD (set, oset); - - for (result = NO_JOB, i = job - 1; i >= 0; i--) - { - if (jobs[i] && (JOBSTATE (i) == state)) - { - result = i; - break; - } - } - - UNBLOCK_CHILD (oset); - - return (result); -} - -/* Return the newest *stopped* job older than JOB, or NO_JOB if not - found. */ -static int -job_last_stopped (job) - int job; -{ - return (most_recent_job_in_state (job, JSTOPPED)); -} - -/* Return the newest *running* job older than JOB, or NO_JOB if not - found. */ -static int -job_last_running (job) - int job; -{ - return (most_recent_job_in_state (job, JRUNNING)); -} - -/* Make JOB be the current job, and make previous be useful. Must be - called with SIGCHLD blocked. */ -static void -set_current_job (job) - int job; -{ - int candidate; - - if (js.j_current != job) - { - js.j_previous = js.j_current; - js.j_current = job; - } - - /* First choice for previous job is the old current job. */ - if (js.j_previous != js.j_current && - js.j_previous != NO_JOB && - jobs[js.j_previous] && - STOPPED (js.j_previous)) - return; - - /* Second choice: Newest stopped job that is older than - the current job. */ - candidate = NO_JOB; - if (STOPPED (js.j_current)) - { - candidate = job_last_stopped (js.j_current); - - if (candidate != NO_JOB) - { - js.j_previous = candidate; - return; - } - } - - /* If we get here, there is either only one stopped job, in which case it is - the current job and the previous job should be set to the newest running - job, or there are only running jobs and the previous job should be set to - the newest running job older than the current job. We decide on which - alternative to use based on whether or not JOBSTATE(js.j_current) is - JSTOPPED. */ - - candidate = RUNNING (js.j_current) ? job_last_running (js.j_current) - : job_last_running (js.j_jobslots); - - if (candidate != NO_JOB) - { - js.j_previous = candidate; - return; - } - - /* There is only a single job, and it is both `+' and `-'. */ - js.j_previous = js.j_current; -} - -/* Make current_job be something useful, if it isn't already. */ - -/* Here's the deal: The newest non-running job should be `+', and the - next-newest non-running job should be `-'. If there is only a single - stopped job, the js.j_previous is the newest non-running job. If there - are only running jobs, the newest running job is `+' and the - next-newest running job is `-'. Must be called with SIGCHLD blocked. */ - -static void -reset_current () -{ - int candidate; - - if (js.j_jobslots && js.j_current != NO_JOB && jobs[js.j_current] && STOPPED (js.j_current)) - candidate = js.j_current; - else - { - candidate = NO_JOB; - - /* First choice: the previous job. */ - if (js.j_previous != NO_JOB && jobs[js.j_previous] && STOPPED (js.j_previous)) - candidate = js.j_previous; - - /* Second choice: the most recently stopped job. */ - if (candidate == NO_JOB) - candidate = job_last_stopped (js.j_jobslots); - - /* Third choice: the newest running job. */ - if (candidate == NO_JOB) - candidate = job_last_running (js.j_jobslots); - } - - /* If we found a job to use, then use it. Otherwise, there - are no jobs period. */ - if (candidate != NO_JOB) - set_current_job (candidate); - else - js.j_current = js.j_previous = NO_JOB; -} - -/* Set up the job structures so we know the job and its processes are - all running. */ -static void -set_job_running (job) - int job; -{ - register PROCESS *p; - - /* Each member of the pipeline is now running. */ - p = jobs[job]->pipe; - - do - { - if (WIFSTOPPED (p->status)) - p->running = PS_RUNNING; /* XXX - could be PS_STOPPED */ - p = p->next; - } - while (p != jobs[job]->pipe); - - /* This means that the job is running. */ - JOBSTATE (job) = JRUNNING; -} - -/* Start a job. FOREGROUND if non-zero says to do that. Otherwise, - start the job in the background. JOB is a zero-based index into - JOBS. Returns -1 if it is unable to start a job, and the return - status of the job otherwise. */ -int -start_job (job, foreground) - int job, foreground; -{ - register PROCESS *p; - int already_running; - sigset_t set, oset; - char *wd, *s; - static TTYSTRUCT save_stty; - - BLOCK_CHILD (set, oset); - - if (DEADJOB (job)) - { - internal_error (_("%s: job has terminated"), this_command_name); - UNBLOCK_CHILD (oset); - return (-1); - } - - already_running = RUNNING (job); - - if (foreground == 0 && already_running) - { - internal_error (_("%s: job %d already in background"), this_command_name, job + 1); - UNBLOCK_CHILD (oset); - return (0); /* XPG6/SUSv3 says this is not an error */ - } - - wd = current_working_directory (); - - /* You don't know about the state of this job. Do you? */ - jobs[job]->flags &= ~J_NOTIFIED; - - if (foreground) - { - set_current_job (job); - jobs[job]->flags |= J_FOREGROUND; - } - - /* Tell the outside world what we're doing. */ - p = jobs[job]->pipe; - - if (foreground == 0) - { - /* POSIX.2 says `bg' doesn't give any indication about current or - previous job. */ - if (posixly_correct == 0) - s = (job == js.j_current) ? "+ ": ((job == js.j_previous) ? "- " : " "); - else - s = " "; - printf ("[%d]%s", job + 1, s); - } - - do - { - printf ("%s%s", - p->command ? p->command : "", - p->next != jobs[job]->pipe? " | " : ""); - p = p->next; - } - while (p != jobs[job]->pipe); - - if (foreground == 0) - printf (" &"); - - if (strcmp (wd, jobs[job]->wd) != 0) - printf (" (wd: %s)", polite_directory_format (jobs[job]->wd)); - - printf ("\n"); - - /* Run the job. */ - if (already_running == 0) - set_job_running (job); - - /* Save the tty settings before we start the job in the foreground. */ - if (foreground) - { - get_tty_state (); - save_stty = shell_tty_info; - /* Give the terminal to this job. */ - if (IS_JOBCONTROL (job)) - give_terminal_to (jobs[job]->pgrp, 0); - } - else - jobs[job]->flags &= ~J_FOREGROUND; - - /* If the job is already running, then don't bother jump-starting it. */ - if (already_running == 0) - { - jobs[job]->flags |= J_NOTIFIED; - killpg (jobs[job]->pgrp, SIGCONT); - } - - if (foreground) - { - pid_t pid; - int st; - - pid = find_last_pid (job, 0); - UNBLOCK_CHILD (oset); - st = wait_for (pid); - shell_tty_info = save_stty; - set_tty_state (); - return (st); - } - else - { - reset_current (); - UNBLOCK_CHILD (oset); - return (0); - } -} - -/* Give PID SIGNAL. This determines what job the pid belongs to (if any). - If PID does belong to a job, and the job is stopped, then CONTinue the - job after giving it SIGNAL. Returns -1 on failure. If GROUP is non-null, - then kill the process group associated with PID. */ -int -kill_pid (pid, sig, group) - pid_t pid; - int sig, group; -{ - register PROCESS *p; - int job, result, negative; - sigset_t set, oset; - - if (pid < -1) - { - pid = -pid; - group = negative = 1; - } - else - negative = 0; - - result = EXECUTION_SUCCESS; - if (group) - { - BLOCK_CHILD (set, oset); - p = find_pipeline (pid, 0, &job); - - if (job != NO_JOB) - { - jobs[job]->flags &= ~J_NOTIFIED; - - /* Kill process in backquotes or one started without job control? */ - - /* If we're passed a pid < -1, just call killpg and see what happens */ - if (negative && jobs[job]->pgrp == shell_pgrp) - result = killpg (pid, sig); - /* If we're killing using job control notification, for example, - without job control active, we have to do things ourselves. */ - else if (jobs[job]->pgrp == shell_pgrp) - { - p = jobs[job]->pipe; - do - { - if (PALIVE (p) == 0) - continue; /* avoid pid recycling problem */ - kill (p->pid, sig); - if (PEXITED (p) && (sig == SIGTERM || sig == SIGHUP)) - kill (p->pid, SIGCONT); - p = p->next; - } - while (p != jobs[job]->pipe); - } - else - { - result = killpg (jobs[job]->pgrp, sig); - if (p && STOPPED (job) && (sig == SIGTERM || sig == SIGHUP)) - killpg (jobs[job]->pgrp, SIGCONT); - /* If we're continuing a stopped job via kill rather than bg or - fg, emulate the `bg' behavior. */ - if (p && STOPPED (job) && (sig == SIGCONT)) - { - set_job_running (job); - jobs[job]->flags &= ~J_FOREGROUND; - jobs[job]->flags |= J_NOTIFIED; - } - } - } - else - result = killpg (pid, sig); - - UNBLOCK_CHILD (oset); - } - else - result = kill (pid, sig); - - return (result); -} - -/* sigchld_handler () flushes at least one of the children that we are - waiting for. It gets run when we have gotten a SIGCHLD signal. */ -static sighandler -sigchld_handler (sig) - int sig; -{ - int n, oerrno; - - oerrno = errno; - REINSTALL_SIGCHLD_HANDLER; - sigchld++; - n = 0; - if (queue_sigchld == 0) - n = waitchld (-1, 0); - errno = oerrno; - SIGRETURN (n); -} - -/* waitchld() reaps dead or stopped children. It's called by wait_for and - sigchld_handler, and runs until there aren't any children terminating any - more. - If BLOCK is 1, this is to be a blocking wait for a single child, although - an arriving SIGCHLD could cause the wait to be non-blocking. It returns - the number of children reaped, or -1 if there are no unwaited-for child - processes. */ -static int -waitchld (wpid, block) - pid_t wpid; - int block; -{ - WAIT status; - PROCESS *child; - pid_t pid; - int call_set_current, last_stopped_job, job, children_exited, waitpid_flags; - static int wcontinued = WCONTINUED; /* run-time fix for glibc problem */ - - call_set_current = children_exited = 0; - last_stopped_job = NO_JOB; - - do - { - /* We don't want to be notified about jobs stopping if job control - is not active. XXX - was interactive_shell instead of job_control */ - waitpid_flags = (job_control && subshell_environment == 0) - ? (WUNTRACED|wcontinued) - : 0; - if (sigchld || block == 0) - waitpid_flags |= WNOHANG; - CHECK_TERMSIG; - - pid = WAITPID (-1, &status, waitpid_flags); - - /* WCONTINUED may be rejected by waitpid as invalid even when defined */ - if (wcontinued && pid < 0 && errno == EINVAL) - { - wcontinued = 0; - continue; /* jump back to the test and retry without WCONTINUED */ - } - - /* The check for WNOHANG is to make sure we decrement sigchld only - if it was non-zero before we called waitpid. */ - if (sigchld > 0 && (waitpid_flags & WNOHANG)) - sigchld--; - - /* If waitpid returns -1 with errno == ECHILD, there are no more - unwaited-for child processes of this shell. */ - if (pid < 0 && errno == ECHILD) - { - if (children_exited == 0) - return -1; - else - break; - } - - /* If 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 */ - - /* children_exited is used to run traps on SIGCHLD. We don't want to - run the trap if a process is just being continued. */ - if (WIFCONTINUED(status) == 0) - { - children_exited++; - js.c_living--; - } - - /* Locate our PROCESS for this pid. */ - child = find_process (pid, 1, &job); /* want living procs only */ - -#if defined (COPROCESS_SUPPORT) - coproc_pidchk (pid); -#endif - - /* It is not an error to have a child terminate that we did - not have a record of. This child could have been part of - a pipeline in backquote substitution. Even so, I'm not - sure child is ever non-zero. */ - if (child == 0) - { - if (WIFEXITED (status) || WIFSIGNALED (status)) - js.c_reaped++; - continue; - } - - /* Remember status, and whether or not the process is running. */ - child->status = status; - child->running = WIFCONTINUED(status) ? PS_RUNNING : PS_DONE; - - if (PEXITED (child)) - { - js.c_totreaped++; - if (job != NO_JOB) - js.c_reaped++; - } - - if (job == NO_JOB) - continue; - - call_set_current += set_job_status_and_cleanup (job); - - if (STOPPED (job)) - last_stopped_job = job; - else if (DEADJOB (job) && last_stopped_job == job) - last_stopped_job = NO_JOB; - } - while ((sigchld || block == 0) && pid > (pid_t)0); - - /* If a job was running and became stopped, then set the current - job. Otherwise, don't change a thing. */ - if (call_set_current) - { - if (last_stopped_job != NO_JOB) - set_current_job (last_stopped_job); - else - reset_current (); - } - - /* Call a SIGCHLD trap handler for each child that exits, if one is set. */ - if (job_control && signal_is_trapped (SIGCHLD) && children_exited && - trap_list[SIGCHLD] != (char *)IGNORE_SIG) - { - if (this_shell_builtin && this_shell_builtin == wait_builtin) - { - interrupt_immediately = 0; - trap_handler (SIGCHLD); /* set pending_traps[SIGCHLD] */ - wait_signal_received = SIGCHLD; - longjmp (wait_intr_buf, 1); - } - - run_sigchld_trap (children_exited); - } - - /* We have successfully recorded the useful information about this process - that has just changed state. If we notify asynchronously, and the job - that this process belongs to is no longer running, then notify the user - of that fact now. */ - if (asynchronous_notification && interactive) - notify_of_job_status (); - - return (children_exited); -} - -/* Set the status of JOB and perform any necessary cleanup if the job is - marked as JDEAD. - - Currently, the cleanup activity is restricted to handling any SIGINT - received while waiting for a foreground job to finish. */ -static int -set_job_status_and_cleanup (job) - int job; -{ - PROCESS *child; - int tstatus, job_state, any_stopped, any_tstped, call_set_current; - SigHandler *temp_handler; - - child = jobs[job]->pipe; - jobs[job]->flags &= ~J_NOTIFIED; - - call_set_current = 0; - - /* - * COMPUTE JOB STATUS - */ - - /* If all children are not running, but any of them is stopped, then - the job is stopped, not dead. */ - job_state = any_stopped = any_tstped = 0; - do - { - job_state |= PRUNNING (child); -#if 0 - if (PEXITED (child) && (WIFSTOPPED (child->status))) -#else - /* Only checking for WIFSTOPPED now, not for PS_DONE */ - if (PSTOPPED (child)) -#endif - { - any_stopped = 1; - any_tstped |= interactive && job_control && - (WSTOPSIG (child->status) == SIGTSTP); - } - child = child->next; - } - while (child != jobs[job]->pipe); - - /* If job_state != 0, the job is still running, so don't bother with - setting the process exit status and job state unless we're - transitioning from stopped to running. */ - if (job_state != 0 && JOBSTATE(job) != JSTOPPED) - return 0; - - /* - * SET JOB STATUS - */ - - /* The job is either stopped or dead. Set the state of the job accordingly. */ - if (any_stopped) - { - jobs[job]->state = JSTOPPED; - jobs[job]->flags &= ~J_FOREGROUND; - call_set_current++; - /* Suspending a job with SIGTSTP breaks all active loops. */ - if (any_tstped && loop_level) - breaking = loop_level; - } - else if (job_state != 0) /* was stopped, now running */ - { - jobs[job]->state = JRUNNING; - call_set_current++; - } - else - { - jobs[job]->state = JDEAD; - js.j_ndead++; - -#if 0 - if (IS_FOREGROUND (job)) - setjstatus (job); -#endif - - /* If this job has a cleanup function associated with it, call it - with `cleanarg' as the single argument, then set the function - pointer to NULL so it is not inadvertently called twice. The - cleanup function is responsible for deallocating cleanarg. */ - if (jobs[job]->j_cleanup) - { - (*jobs[job]->j_cleanup) (jobs[job]->cleanarg); - jobs[job]->j_cleanup = (sh_vptrfunc_t *)NULL; - } - } - - /* - * CLEANUP - * - * Currently, we just do special things if we got a SIGINT while waiting - * for a foreground job to complete - */ - - if (JOBSTATE (job) == JDEAD) - { - /* If we're running a shell script and we get a SIGINT with a - SIGINT trap handler, but the foreground job handles it and - does not exit due to SIGINT, run the trap handler but do not - otherwise act as if we got the interrupt. */ - if (wait_sigint_received && interactive_shell == 0 && - WIFSIGNALED (child->status) == 0 && IS_FOREGROUND (job) && - signal_is_trapped (SIGINT)) - { - int old_frozen; - wait_sigint_received = 0; - last_command_exit_value = process_exit_status (child->status); - - old_frozen = jobs_list_frozen; - jobs_list_frozen = 1; - tstatus = maybe_call_trap_handler (SIGINT); - jobs_list_frozen = old_frozen; - } - - /* If the foreground job is killed by SIGINT when job control is not - active, we need to perform some special handling. - - The check of wait_sigint_received is a way to determine if the - SIGINT came from the keyboard (in which case the shell has already - seen it, and wait_sigint_received is non-zero, because keyboard - signals are sent to process groups) or via kill(2) to the foreground - process by another process (or itself). If the shell did receive the - SIGINT, it needs to perform normal SIGINT processing. */ - else if (wait_sigint_received && (WTERMSIG (child->status) == SIGINT) && - IS_FOREGROUND (job) && IS_JOBCONTROL (job) == 0) - { - int old_frozen; - - wait_sigint_received = 0; - - /* If SIGINT is trapped, set the exit status so that the trap - handler can see it. */ - if (signal_is_trapped (SIGINT)) - last_command_exit_value = process_exit_status (child->status); - - /* If the signal is trapped, let the trap handler get it no matter - what and simply return if the trap handler returns. - maybe_call_trap_handler() may cause dead jobs to be removed from - the job table because of a call to execute_command. We work - around this by setting JOBS_LIST_FROZEN. */ - old_frozen = jobs_list_frozen; - jobs_list_frozen = 1; - tstatus = maybe_call_trap_handler (SIGINT); - jobs_list_frozen = old_frozen; - if (tstatus == 0 && old_sigint_handler != INVALID_SIGNAL_HANDLER) - { - /* wait_sigint_handler () has already seen SIGINT and - allowed the wait builtin to jump out. We need to - call the original SIGINT handler, if necessary. If - the original handler is SIG_DFL, we need to resend - the signal to ourselves. */ - - temp_handler = old_sigint_handler; - - /* Bogus. If we've reset the signal handler as the result - of a trap caught on SIGINT, then old_sigint_handler - will point to trap_handler, which now knows nothing about - SIGINT (if we reset the sighandler to the default). - In this case, we have to fix things up. What a crock. */ - if (temp_handler == trap_handler && signal_is_trapped (SIGINT) == 0) - temp_handler = trap_to_sighandler (SIGINT); - restore_sigint_handler (); - if (temp_handler == SIG_DFL) - termsig_handler (SIGINT); - else if (temp_handler != SIG_IGN) - (*temp_handler) (SIGINT); - } - } - } - - return call_set_current; -} - -/* Build the array of values for the $PIPESTATUS variable from the set of - exit statuses of all processes in the job J. */ -static void -setjstatus (j) - int j; -{ -#if defined (ARRAY_VARS) - register int i; - register PROCESS *p; - - for (i = 1, p = jobs[j]->pipe; p->next != jobs[j]->pipe; p = p->next, i++) - ; - i++; - if (statsize < i) - { - pstatuses = (int *)xrealloc (pstatuses, i * sizeof (int)); - statsize = i; - } - i = 0; - p = jobs[j]->pipe; - do - { - pstatuses[i++] = process_exit_status (p->status); - p = p->next; - } - while (p != jobs[j]->pipe); - - pstatuses[i] = -1; /* sentinel */ - set_pipestatus_array (pstatuses, i); -#endif -} - -void -run_sigchld_trap (nchild) - int nchild; -{ - char *trap_command; - int i; - - /* Turn off the trap list during the call to parse_and_execute () - to avoid potentially infinite recursive calls. Preserve the - values of last_command_exit_value, last_made_pid, and the_pipeline - around the execution of the trap commands. */ - trap_command = savestring (trap_list[SIGCHLD]); - - begin_unwind_frame ("SIGCHLD trap"); - unwind_protect_int (last_command_exit_value); - unwind_protect_int (last_command_exit_signal); - unwind_protect_var (last_made_pid); - unwind_protect_int (interrupt_immediately); - unwind_protect_int (jobs_list_frozen); - unwind_protect_pointer (the_pipeline); - unwind_protect_pointer (subst_assign_varlist); - - /* We have to add the commands this way because they will be run - in reverse order of adding. We don't want maybe_set_sigchld_trap () - to reference freed memory. */ - add_unwind_protect (xfree, trap_command); - add_unwind_protect (maybe_set_sigchld_trap, trap_command); - - subst_assign_varlist = (WORD_LIST *)NULL; - the_pipeline = (PROCESS *)NULL; - - set_impossible_sigchld_trap (); - jobs_list_frozen = 1; - for (i = 0; i < nchild; i++) - { - interrupt_immediately = 1; - parse_and_execute (savestring (trap_command), "trap", SEVAL_NOHIST|SEVAL_RESETLINE); - } - - run_unwind_frame ("SIGCHLD trap"); -} - -/* Function to call when you want to notify people of changes - in job status. This prints out all jobs which are pending - notification to stderr, and marks those printed as already - notified, thus making them candidates for cleanup. */ -static void -notify_of_job_status () -{ - register int job, termsig; - char *dir; - sigset_t set, oset; - WAIT s; - - if (jobs == 0 || js.j_jobslots == 0) - return; - - if (old_ttou != 0) - { - sigemptyset (&set); - sigaddset (&set, SIGCHLD); - sigaddset (&set, SIGTTOU); - sigemptyset (&oset); - sigprocmask (SIG_BLOCK, &set, &oset); - } - else - queue_sigchld++; - - /* XXX could use js.j_firstj here */ - for (job = 0, dir = (char *)NULL; job < js.j_jobslots; job++) - { - if (jobs[job] && IS_NOTIFIED (job) == 0) - { - s = raw_job_exit_status (job); - termsig = WTERMSIG (s); - - /* POSIX.2 says we have to hang onto the statuses of at most the - last CHILD_MAX background processes if the shell is running a - script. If the shell is running a script, either from a file - or standard input, don't print anything unless the job was - killed by a signal. */ - if (startup_state == 0 && WIFSIGNALED (s) == 0 && - ((DEADJOB (job) && IS_FOREGROUND (job) == 0) || STOPPED (job))) - continue; - -#if 0 - /* If job control is disabled, don't print the status messages. - Mark dead jobs as notified so that they get cleaned up. If - startup_state == 2, we were started to run `-c command', so - don't print anything. */ - if ((job_control == 0 && interactive_shell) || startup_state == 2) -#else - /* If job control is disabled, don't print the status messages. - Mark dead jobs as notified so that they get cleaned up. If - startup_state == 2 and subshell_environment has the - SUBSHELL_COMSUB bit turned on, we were started to run a command - substitution, so don't print anything. */ - if ((job_control == 0 && interactive_shell) || - (startup_state == 2 && (subshell_environment & SUBSHELL_COMSUB))) -#endif - { - /* POSIX.2 compatibility: if the shell is not interactive, - hang onto the job corresponding to the last asynchronous - pid until the user has been notified of its status or does - a `wait'. */ - if (DEADJOB (job) && (interactive_shell || (find_last_pid (job, 0) != last_asynchronous_pid))) - jobs[job]->flags |= J_NOTIFIED; - continue; - } - - /* Print info on jobs that are running in the background, - and on foreground jobs that were killed by anything - except SIGINT (and possibly SIGPIPE). */ - switch (JOBSTATE (job)) - { - case JDEAD: - if (interactive_shell == 0 && termsig && WIFSIGNALED (s) && - termsig != SIGINT && -#if defined (DONT_REPORT_SIGPIPE) - termsig != SIGPIPE && -#endif - signal_is_trapped (termsig) == 0) - { - /* Don't print `0' for a line number. */ - fprintf (stderr, _("%s: line %d: "), get_name_for_error (), (line_number == 0) ? 1 : line_number); - pretty_print_job (job, JLIST_NONINTERACTIVE, stderr); - } - else if (IS_FOREGROUND (job)) - { -#if !defined (DONT_REPORT_SIGPIPE) - if (termsig && WIFSIGNALED (s) && termsig != SIGINT) -#else - if (termsig && WIFSIGNALED (s) && termsig != SIGINT && termsig != SIGPIPE) -#endif - { - fprintf (stderr, "%s", j_strsignal (termsig)); - - if (WIFCORED (s)) - fprintf (stderr, _(" (core dumped)")); - - fprintf (stderr, "\n"); - } - } - else if (job_control) /* XXX job control test added */ - { - if (dir == 0) - dir = current_working_directory (); - pretty_print_job (job, JLIST_STANDARD, stderr); - if (dir && strcmp (dir, jobs[job]->wd) != 0) - fprintf (stderr, - _("(wd now: %s)\n"), polite_directory_format (dir)); - } - - jobs[job]->flags |= J_NOTIFIED; - break; - - case JSTOPPED: - fprintf (stderr, "\n"); - if (dir == 0) - dir = current_working_directory (); - pretty_print_job (job, JLIST_STANDARD, stderr); - if (dir && (strcmp (dir, jobs[job]->wd) != 0)) - fprintf (stderr, - _("(wd now: %s)\n"), polite_directory_format (dir)); - jobs[job]->flags |= J_NOTIFIED; - break; - - case JRUNNING: - case JMIXED: - break; - - default: - programming_error ("notify_of_job_status"); - } - } - } - if (old_ttou != 0) - sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); - else - queue_sigchld--; -} - -/* Initialize the job control mechanism, and set up the tty stuff. */ -int -initialize_job_control (force) - int force; -{ - pid_t t; - int t_errno; - - t_errno = -1; - shell_pgrp = getpgid (0); - - if (shell_pgrp == -1) - { - sys_error (_("initialize_job_control: getpgrp failed")); - exit (1); - } - - /* We can only have job control if we are interactive. */ - if (interactive == 0) - { - job_control = 0; - original_pgrp = NO_PID; - shell_tty = fileno (stderr); - } - else - { - shell_tty = -1; - - /* If forced_interactive is set, we skip the normal check that stderr - is attached to a tty, so we need to check here. If it's not, we - need to see whether we have a controlling tty by opening /dev/tty, - since trying to use job control tty pgrp manipulations on a non-tty - is going to fail. */ - if (forced_interactive && isatty (fileno (stderr)) == 0) - shell_tty = open ("/dev/tty", O_RDWR|O_NONBLOCK); - - /* Get our controlling terminal. If job_control is set, or - interactive is set, then this is an interactive shell no - matter where fd 2 is directed. */ - if (shell_tty == -1) - shell_tty = dup (fileno (stderr)); /* fd 2 */ - - shell_tty = move_to_high_fd (shell_tty, 1, -1); - - /* Compensate for a bug in systems that compiled the BSD - rlogind with DEBUG defined, like NeXT and Alliant. */ - if (shell_pgrp == 0) - { - shell_pgrp = getpid (); - setpgid (0, shell_pgrp); - tcsetpgrp (shell_tty, shell_pgrp); - } - - while ((terminal_pgrp = tcgetpgrp (shell_tty)) != -1) - { - if (shell_pgrp != terminal_pgrp) - { - SigHandler *ottin; - - ottin = set_signal_handler(SIGTTIN, SIG_DFL); - kill (0, SIGTTIN); - set_signal_handler (SIGTTIN, ottin); - continue; - } - break; - } - - if (terminal_pgrp == -1) - t_errno = errno; - - /* Make sure that we are using the new line discipline. */ - if (set_new_line_discipline (shell_tty) < 0) - { - sys_error (_("initialize_job_control: line discipline")); - job_control = 0; - } - else - { - original_pgrp = shell_pgrp; - shell_pgrp = getpid (); - - if ((original_pgrp != shell_pgrp) && (setpgid (0, shell_pgrp) < 0)) - { - sys_error (_("initialize_job_control: setpgid")); - shell_pgrp = original_pgrp; - } - - job_control = 1; - - /* If (and only if) we just set our process group to our pid, - thereby becoming a process group leader, and the terminal - is not in the same process group as our (new) process group, - then set the terminal's process group to our (new) process - group. If that fails, set our process group back to what it - was originally (so we can still read from the terminal) and - turn off job control. */ - if (shell_pgrp != original_pgrp && shell_pgrp != terminal_pgrp) - { - if (give_terminal_to (shell_pgrp, 0) < 0) - { - t_errno = errno; - setpgid (0, original_pgrp); - shell_pgrp = original_pgrp; - job_control = 0; - } - } - - if (job_control && ((t = tcgetpgrp (shell_tty)) == -1 || t != shell_pgrp)) - { - if (t_errno != -1) - errno = t_errno; - sys_error (_("cannot set terminal process group (%d)"), t); - job_control = 0; - } - } - if (job_control == 0) - internal_error (_("no job control in this shell")); - } - - if (shell_tty != fileno (stderr)) - SET_CLOSE_ON_EXEC (shell_tty); - - set_signal_handler (SIGCHLD, sigchld_handler); - - change_flag ('m', job_control ? '-' : '+'); - - if (interactive) - get_tty_state (); - - if (js.c_childmax < 0) - js.c_childmax = getmaxchild (); - if (js.c_childmax < 0) - js.c_childmax = DEFAULT_CHILD_MAX; - - return job_control; -} - -#ifdef DEBUG -void -debug_print_pgrps () -{ - itrace("original_pgrp = %ld shell_pgrp = %ld terminal_pgrp = %ld", - (long)original_pgrp, (long)shell_pgrp, (long)terminal_pgrp); - itrace("tcgetpgrp(%d) -> %ld, getpgid(0) -> %ld", - shell_tty, (long)tcgetpgrp (shell_tty), (long)getpgid(0)); -} -#endif - -/* Set the line discipline to the best this system has to offer. - Return -1 if this is not possible. */ -static int -set_new_line_discipline (tty) - int tty; -{ -#if defined (NEW_TTY_DRIVER) - int ldisc; - - if (ioctl (tty, TIOCGETD, &ldisc) < 0) - return (-1); - - if (ldisc != NTTYDISC) - { - ldisc = NTTYDISC; - - if (ioctl (tty, TIOCSETD, &ldisc) < 0) - return (-1); - } - return (0); -#endif /* NEW_TTY_DRIVER */ - -#if defined (TERMIO_TTY_DRIVER) -# if defined (TERMIO_LDISC) && (NTTYDISC) - if (ioctl (tty, TCGETA, &shell_tty_info) < 0) - return (-1); - - if (shell_tty_info.c_line != NTTYDISC) - { - shell_tty_info.c_line = NTTYDISC; - if (ioctl (tty, TCSETAW, &shell_tty_info) < 0) - return (-1); - } -# endif /* TERMIO_LDISC && NTTYDISC */ - return (0); -#endif /* TERMIO_TTY_DRIVER */ - -#if defined (TERMIOS_TTY_DRIVER) -# if defined (TERMIOS_LDISC) && defined (NTTYDISC) - if (tcgetattr (tty, &shell_tty_info) < 0) - return (-1); - - if (shell_tty_info.c_line != NTTYDISC) - { - shell_tty_info.c_line = NTTYDISC; - if (tcsetattr (tty, TCSADRAIN, &shell_tty_info) < 0) - return (-1); - } -# endif /* TERMIOS_LDISC && NTTYDISC */ - return (0); -#endif /* TERMIOS_TTY_DRIVER */ - -#if !defined (NEW_TTY_DRIVER) && !defined (TERMIO_TTY_DRIVER) && !defined (TERMIOS_TTY_DRIVER) - return (-1); -#endif -} - -/* Setup this shell to handle C-C, etc. */ -void -initialize_job_signals () -{ - if (interactive) - { - set_signal_handler (SIGINT, sigint_sighandler); - set_signal_handler (SIGTSTP, SIG_IGN); - set_signal_handler (SIGTTOU, SIG_IGN); - set_signal_handler (SIGTTIN, SIG_IGN); - } - else if (job_control) - { - old_tstp = set_signal_handler (SIGTSTP, sigstop_sighandler); - old_ttin = set_signal_handler (SIGTTIN, sigstop_sighandler); - old_ttou = set_signal_handler (SIGTTOU, sigstop_sighandler); - } - /* Leave these things alone for non-interactive shells without job - control. */ -} - -/* Here we handle CONT signals. */ -static sighandler -sigcont_sighandler (sig) - int sig; -{ - initialize_job_signals (); - set_signal_handler (SIGCONT, old_cont); - kill (getpid (), SIGCONT); - - SIGRETURN (0); -} - -/* Here we handle stop signals while we are running not as a login shell. */ -static sighandler -sigstop_sighandler (sig) - int sig; -{ - set_signal_handler (SIGTSTP, old_tstp); - set_signal_handler (SIGTTOU, old_ttou); - set_signal_handler (SIGTTIN, old_ttin); - - old_cont = set_signal_handler (SIGCONT, sigcont_sighandler); - - give_terminal_to (shell_pgrp, 0); - - kill (getpid (), sig); - - SIGRETURN (0); -} - -/* Give the terminal to PGRP. */ -int -give_terminal_to (pgrp, force) - pid_t pgrp; - int force; -{ - sigset_t set, oset; - int r, e; - - r = 0; - if (job_control || force) - { - sigemptyset (&set); - sigaddset (&set, SIGTTOU); - sigaddset (&set, SIGTTIN); - sigaddset (&set, SIGTSTP); - sigaddset (&set, SIGCHLD); - sigemptyset (&oset); - sigprocmask (SIG_BLOCK, &set, &oset); - - if (tcsetpgrp (shell_tty, pgrp) < 0) - { - /* Maybe we should print an error message? */ -#if 0 - sys_error ("tcsetpgrp(%d) failed: pid %ld to pgrp %ld", - shell_tty, (long)getpid(), (long)pgrp); -#endif - r = -1; - e = errno; - } - else - terminal_pgrp = pgrp; - sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); - } - - if (r == -1) - errno = e; - return r; -} - -/* Clear out any jobs in the job array. This is intended to be used by - children of the shell, who should not have any job structures as baggage - when they start executing (forking subshells for parenthesized execution - and functions with pipes are the two that spring to mind). If RUNNING_ONLY - is nonzero, only running jobs are removed from the table. */ -void -delete_all_jobs (running_only) - int running_only; -{ - register int i; - sigset_t set, oset; - - BLOCK_CHILD (set, oset); - - /* XXX - need to set j_lastj, j_firstj appropriately if running_only != 0. */ - if (js.j_jobslots) - { - js.j_current = js.j_previous = NO_JOB; - - /* XXX could use js.j_firstj here */ - for (i = 0; i < js.j_jobslots; i++) - { -#if defined (DEBUG) - if (i < js.j_firstj && jobs[i]) - itrace("delete_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); - if (i > js.j_lastj && jobs[i]) - itrace("delete_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif - if (jobs[i] && (running_only == 0 || (running_only && RUNNING(i)))) - delete_job (i, DEL_WARNSTOPPED); - } - if (running_only == 0) - { - free ((char *)jobs); - js.j_jobslots = 0; - js.j_firstj = js.j_lastj = js.j_njobs = 0; - } - } - - if (running_only == 0) - bgp_clear (); - - UNBLOCK_CHILD (oset); -} - -/* Mark all jobs in the job array so that they don't get a SIGHUP when the - shell gets one. If RUNNING_ONLY is nonzero, mark only running jobs. */ -void -nohup_all_jobs (running_only) - int running_only; -{ - register int i; - sigset_t set, oset; - - BLOCK_CHILD (set, oset); - - if (js.j_jobslots) - { - /* XXX could use js.j_firstj here */ - for (i = 0; i < js.j_jobslots; i++) - if (jobs[i] && (running_only == 0 || (running_only && RUNNING(i)))) - nohup_job (i); - } - - UNBLOCK_CHILD (oset); -} - -int -count_all_jobs () -{ - int i, n; - sigset_t set, oset; - - /* This really counts all non-dead jobs. */ - BLOCK_CHILD (set, oset); - /* XXX could use js.j_firstj here */ - for (i = n = 0; i < js.j_jobslots; i++) - { -#if defined (DEBUG) - if (i < js.j_firstj && jobs[i]) - itrace("count_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); - if (i > js.j_lastj && jobs[i]) - itrace("count_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif - if (jobs[i] && DEADJOB(i) == 0) - n++; - } - UNBLOCK_CHILD (oset); - return n; -} - -static void -mark_all_jobs_as_dead () -{ - register int i; - sigset_t set, oset; - - if (js.j_jobslots == 0) - return; - - BLOCK_CHILD (set, oset); - - /* XXX could use js.j_firstj here */ - for (i = 0; i < js.j_jobslots; i++) - if (jobs[i]) - { - jobs[i]->state = JDEAD; - js.j_ndead++; - } - - UNBLOCK_CHILD (oset); -} - -/* Mark all dead jobs as notified, so delete_job () cleans them out - of the job table properly. POSIX.2 says we need to save the - status of the last CHILD_MAX jobs, so we count the number of dead - jobs and mark only enough as notified to save CHILD_MAX statuses. */ -static void -mark_dead_jobs_as_notified (force) - int force; -{ - register int i, ndead, ndeadproc; - sigset_t set, oset; - - if (js.j_jobslots == 0) - return; - - BLOCK_CHILD (set, oset); - - /* If FORCE is non-zero, we don't have to keep CHILD_MAX statuses - around; just run through the array. */ - if (force) - { - /* XXX could use js.j_firstj here */ - for (i = 0; i < js.j_jobslots; i++) - { - if (jobs[i] && DEADJOB (i) && (interactive_shell || (find_last_pid (i, 0) != last_asynchronous_pid))) - jobs[i]->flags |= J_NOTIFIED; - } - UNBLOCK_CHILD (oset); - return; - } - - /* Mark enough dead jobs as notified to keep CHILD_MAX processes left in the - array with the corresponding not marked as notified. This is a better - way to avoid pid aliasing and reuse problems than keeping the POSIX- - mandated CHILD_MAX jobs around. delete_job() takes care of keeping the - bgpids list regulated. */ - - /* Count the number of dead jobs */ - /* XXX could use js.j_firstj here */ - for (i = ndead = ndeadproc = 0; i < js.j_jobslots; i++) - { -#if defined (DEBUG) - if (i < js.j_firstj && jobs[i]) - itrace("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); - if (i > js.j_lastj && jobs[i]) - itrace("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif - if (jobs[i] && DEADJOB (i)) - { - ndead++; - ndeadproc += processes_in_job (i); - } - } - -#ifdef DEBUG - if (ndeadproc != js.c_reaped) - itrace("mark_dead_jobs_as_notified: ndeadproc (%d) != js.c_reaped (%d)", ndeadproc, js.c_reaped); - if (ndead != js.j_ndead) - itrace("mark_dead_jobs_as_notified: ndead (%d) != js.j_ndead (%d)", ndead, js.j_ndead); -#endif - - if (js.c_childmax < 0) - js.c_childmax = getmaxchild (); - if (js.c_childmax < 0) - js.c_childmax = DEFAULT_CHILD_MAX; - - /* Don't do anything if the number of dead processes is less than CHILD_MAX - and we're not forcing a cleanup. */ - if (ndeadproc <= js.c_childmax) - { - UNBLOCK_CHILD (oset); - return; - } - -#if 0 -itrace("mark_dead_jobs_as_notified: child_max = %d ndead = %d ndeadproc = %d", js.c_childmax, ndead, ndeadproc); -#endif - - /* Mark enough dead jobs as notified that we keep CHILD_MAX jobs in - the list. This isn't exactly right yet; changes need to be made - to stop_pipeline so we don't mark the newer jobs after we've - created CHILD_MAX slots in the jobs array. This needs to be - integrated with a way to keep the jobs array from growing without - bound. Maybe we wrap back around to 0 after we reach some max - limit, and there are sufficient job slots free (keep track of total - size of jobs array (js.j_jobslots) and running count of number of jobs - in jobs array. Then keep a job index corresponding to the `oldest job' - and start this loop there, wrapping around as necessary. In effect, - we turn the list into a circular buffer. */ - /* XXX could use js.j_firstj here */ - for (i = 0; i < js.j_jobslots; i++) - { - if (jobs[i] && DEADJOB (i) && (interactive_shell || (find_last_pid (i, 0) != last_asynchronous_pid))) - { -#if defined (DEBUG) - if (i < js.j_firstj && jobs[i]) - itrace("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); - if (i > js.j_lastj && jobs[i]) - itrace("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif - /* If marking this job as notified would drop us down below - child_max, don't mark it so we can keep at least child_max - statuses. XXX -- need to check what Posix actually says - about keeping statuses. */ - if ((ndeadproc -= processes_in_job (i)) <= js.c_childmax) - break; - jobs[i]->flags |= J_NOTIFIED; - } - } - - UNBLOCK_CHILD (oset); -} - -/* Here to allow other parts of the shell (like the trap stuff) to - unfreeze the jobs list. */ -void -unfreeze_jobs_list () -{ - jobs_list_frozen = 0; -} - -/* Allow or disallow job control to take place. Returns the old value - of job_control. */ -int -set_job_control (arg) - int arg; -{ - int old; - - old = job_control; - job_control = arg; - - /* If we're turning on job control, reset pipeline_pgrp so make_child will - put new child processes into the right pgrp */ - if (job_control != old && job_control) - pipeline_pgrp = 0; - - return (old); -} - -/* Turn off all traces of job control. This is run by children of the shell - which are going to do shellsy things, like wait (), etc. */ -void -without_job_control () -{ - stop_making_children (); - start_pipeline (); -#if defined (PGRP_PIPE) - sh_closepipe (pgrp_pipe); -#endif - delete_all_jobs (0); - set_job_control (0); -} - -/* If this shell is interactive, terminate all stopped jobs and - restore the original terminal process group. This is done - before the `exec' builtin calls shell_execve. */ -void -end_job_control () -{ - if (interactive_shell) /* XXX - should it be interactive? */ - { - terminate_stopped_jobs (); - - if (original_pgrp >= 0) - give_terminal_to (original_pgrp, 1); - } - - if (original_pgrp >= 0) - setpgid (0, original_pgrp); -} - -/* Restart job control by closing shell tty and reinitializing. This is - called after an exec fails in an interactive shell and we do not exit. */ -void -restart_job_control () -{ - if (shell_tty != -1) - close (shell_tty); - initialize_job_control (0); -} - -/* Set the handler to run when the shell receives a SIGCHLD signal. */ -void -set_sigchld_handler () -{ - set_signal_handler (SIGCHLD, sigchld_handler); -} - -#if defined (PGRP_PIPE) -/* Read from the read end of a pipe. This is how the process group leader - blocks until all of the processes in a pipeline have been made. */ -static void -pipe_read (pp) - int *pp; -{ - char ch; - - if (pp[1] >= 0) - { - close (pp[1]); - pp[1] = -1; - } - - if (pp[0] >= 0) - { - while (read (pp[0], &ch, 1) == -1 && errno == EINTR) - ; - } -} - -/* Functional interface closes our local-to-job-control pipes. */ -void -close_pgrp_pipe () -{ - sh_closepipe (pgrp_pipe); -} - -#endif /* PGRP_PIPE */ diff --git a/jobs.c.patch b/jobs.c.patch deleted file mode 100644 index dbf8c2656..000000000 --- a/jobs.c.patch +++ /dev/null @@ -1,56 +0,0 @@ -*** jobs.c.20080704 2008-07-10 15:14:13.000000000 -0400 ---- jobs.c 2008-07-10 15:17:59.000000000 -0400 -*************** -*** 266,269 **** ---- 266,270 ---- - static void set_job_running __P((int)); - static void setjstatus __P((int)); -+ static int maybe_give_terminal_to __P((pid_t, pid_t, int)); - static void mark_all_jobs_as_dead __P((void)); - static void mark_dead_jobs_as_notified __P((int)); -*************** -*** 637,641 **** - */ - if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0) -! give_terminal_to (newjob->pgrp, 0); - } - } ---- 638,642 ---- - */ - if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0) -! maybe_give_terminal_to (shell_pgrp, newjob->pgrp, 0); - } - } -*************** -*** 3833,3836 **** ---- 3834,3863 ---- - } - -+ /* Give terminal to NPGRP iff it's currently owned by OPGRP. FLAGS are the -+ flags to pass to give_terminal_to(). */ -+ static int -+ maybe_give_terminal_to (opgrp, npgrp, flags) -+ pid_t opgrp, npgrp; -+ int flags; -+ { -+ int tpgrp; -+ -+ tpgrp = tcgetpgrp (shell_tty); -+ if (tpgrp == npgrp) -+ { -+ terminal_pgrp = npgrp; -+ return 0; -+ } -+ else if (tpgrp != opgrp) -+ { -+ #if defined (DEBUG) -+ internal_warning ("maybe_give_terminal_to: terminal pgrp == %d shell pgrp = %d", tpgrp, opgrp); -+ #endif -+ return -1; -+ } -+ else -+ return (give_terminal_to (npgrp, flags)); -+ } -+ - /* Clear out any jobs in the job array. This is intended to be used by - children of the shell, who should not have any job structures as baggage diff --git a/lib/malloc/malloc.c.bad b/lib/malloc/malloc.c.bad deleted file mode 100644 index b530d8d5e..000000000 --- a/lib/malloc/malloc.c.bad +++ /dev/null @@ -1,1216 +0,0 @@ -/* malloc.c - dynamic memory allocation for bash. */ - -/* Copyright (C) 1985, 1987, 1997 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. - -In other words, you are welcome to use, share and improve this program. -You are forbidden to forbid anyone else to use, share and improve -what you give them. Help stamp out software-hoarding! */ - -/* - * @(#)nmalloc.c 1 (Caltech) 2/21/82 - * - * U of M Modified: 20 Jun 1983 ACT: strange hacks for Emacs - * - * Nov 1983, Mike@BRL, Added support for 4.1C/4.2 BSD. - * - * This is a very fast storage allocator. It allocates blocks of a small - * number of different sizes, and keeps free lists of each size. Blocks - * that don't exactly fit are passed up to the next larger size. In this - * implementation, the available sizes are (2^n)-4 (or -16) bytes long. - * This is designed for use in a program that uses vast quantities of - * memory, but bombs when it runs out. To make it a little better, it - * warns the user when he starts to get near the end. - * - * June 84, ACT: modified rcheck code to check the range given to malloc, - * rather than the range determined by the 2-power used. - * - * Jan 85, RMS: calls malloc_warning to issue warning on nearly full. - * No longer Emacs-specific; can serve as all-purpose malloc for GNU. - * You should call malloc_init to reinitialize after loading dumped Emacs. - * Call malloc_stats to get info on memory stats if MALLOC_STATS turned on. - * realloc knows how to return same block given, just changing its size, - * if the power of 2 is correct. - */ - -/* - * nextf[i] is the pointer to the next free block of size 2^(i+3). The - * smallest allocatable block is 8 bytes. The overhead information will - * go in the first int of the block, and the returned pointer will point - * to the second. - */ - -/* Define MEMSCRAMBLE to have free() write 0xcf into memory as it's freed, to - uncover callers that refer to freed memory, and to have malloc() write 0xdf - into memory as it's allocated to avoid referring to previous contents. */ - -/* SCO 3.2v4 getcwd and possibly other libc routines fail with MEMSCRAMBLE; - handled by configure. */ - -#if defined (HAVE_CONFIG_H) -# include -#endif /* HAVE_CONFIG_H */ - -#if defined (SHELL) -# include "bashtypes.h" -# include "stdc.h" -#else -# include -#endif - -#if defined (HAVE_UNISTD_H) -# include -#endif - -/* Determine which kind of system this is. */ -#include - -#if defined (HAVE_STRING_H) -# include -#else -# include -#endif - -#include - -/* Define getpagesize () if the system does not. */ -#ifndef HAVE_GETPAGESIZE -# include "getpagesize.h" -#endif - -#include "imalloc.h" -#ifdef MALLOC_STATS -# include "mstats.h" -#endif -#ifdef MALLOC_REGISTER -# include "table.h" -#endif -#ifdef MALLOC_WATCH -# include "watch.h" -#endif - -/* System-specific omissions. */ -#ifdef HPUX -# define NO_VALLOC -#endif - -#define NBUCKETS 30 - -#define ISALLOC ((char) 0xf7) /* magic byte that implies allocation */ -#define ISFREE ((char) 0x54) /* magic byte that implies free block */ - /* this is for error checking only */ -#define ISMEMALIGN ((char) 0xd6) /* Stored before the value returned by - memalign, with the rest of the word - being the distance to the true - beginning of the block. */ - - -/* We have a flag indicating whether memory is allocated, an index in - nextf[], a size field, and a sentinel value to determine whether or - not a caller wrote before the start of allocated memory; to realloc() - memory we either copy mh_nbytes or just change mh_nbytes if there is - enough room in the block for the new size. Range checking is always - done. */ -union mhead { - bits64_t mh_align; /* 8 */ - struct { - char mi_alloc; /* ISALLOC or ISFREE */ /* 1 */ - char mi_index; /* index in nextf[] */ /* 1 */ - /* Remainder are valid only when block is allocated */ - u_bits16_t mi_magic2; /* should be == MAGIC2 */ /* 2 */ - u_bits32_t mi_nbytes; /* # of bytes allocated */ /* 4 */ - } minfo; -}; -#define mh_alloc minfo.mi_alloc -#define mh_index minfo.mi_index -#define mh_nbytes minfo.mi_nbytes -#define mh_magic2 minfo.mi_magic2 - -#define MOVERHEAD sizeof(union mhead) -#define MALIGN_MASK 7 /* one less than desired alignment */ - -/* Access free-list pointer of a block. - It is stored at block + sizeof (char *). - This is not a field in the minfo structure member of union mhead - because we want sizeof (union mhead) - to describe the overhead for when the block is in use, - and we do not want the free-list pointer to count in that. */ - -#define CHAIN(a) \ - (*(union mhead **) (sizeof (char *) + (char *) (a))) - -/* To implement range checking, we write magic values in at the beginning - and end of each allocated block, and make sure they are undisturbed - whenever a free or a realloc occurs. */ - -/* Written in the 2 bytes before the block's real space (-4 bytes) */ -#define MAGIC2 0x5555 -#define MSLOP 4 /* 4 bytes extra for u_bits32_t size */ - -/* How many bytes are actually allocated for a request of size N -- - rounded up to nearest multiple of 8 after accounting for malloc - overhead. */ -#define ALLOCATED_BYTES(n) \ - (((n) + MOVERHEAD + MSLOP + MALIGN_MASK) & ~MALIGN_MASK) - -#define ASSERT(p) \ - do \ - { \ - if (!(p)) xbotch((PTR_T)0, ERR_ASSERT_FAILED, __STRING(p), file, line); \ - } \ - while (0) - -/* Minimum and maximum bucket indices for block splitting (and to bound - the search for a block to split). */ -#define SPLIT_MIN 2 /* XXX - was 3 */ -#define SPLIT_MID 11 -#define SPLIT_MAX 14 - -/* Minimum and maximum bucket indices for block coalescing. */ -#define COMBINE_MIN 2 -#define COMBINE_MAX (pagebucket - 1) /* XXX */ - -#define LESSCORE_MIN 10 -#define LESSCORE_FRC 13 - -#define STARTBUCK 1 - -/* Flags for the internal functions. */ -#define MALLOC_WRAPPER 0x01 /* wrapper function */ -#define MALLOC_INTERNAL 0x02 /* internal function calling another */ -#define MALLOC_NOTRACE 0x04 /* don't trace this allocation or free */ -#define MALLOC_NOREG 0x08 /* don't register this allocation or free */ - -/* Future use. */ -#define ERR_DUPFREE 0x01 -#define ERR_UNALLOC 0x02 -#define ERR_UNDERFLOW 0x04 -#define ERR_ASSERT_FAILED 0x08 - -/* Evaluates to true if NB is appropriate for bucket NU. NB is adjusted - appropriately by the caller to account for malloc overhead. This only - checks that the recorded size is not too big for the bucket. We - can't check whether or not it's in between NU and NU-1 because we - might have encountered a busy bucket when allocating and moved up to - the next size. */ -#define IN_BUCKET(nb, nu) ((nb) <= binsizes[(nu)]) - -/* Use this when we want to be sure that NB is in bucket NU. */ -#define RIGHT_BUCKET(nb, nu) \ - (((nb) > binsizes[(nu)-1]) && ((nb) <= binsizes[(nu)])) - -/* nextf[i] is free list of blocks of size 2**(i + 3) */ - -static union mhead *nextf[NBUCKETS]; - -/* busy[i] is nonzero while allocation of block size i is in progress. */ - -static char busy[NBUCKETS]; - -static int pagesz; /* system page size. */ -static int pagebucket; /* bucket for requests a page in size */ -static int maxbuck; /* highest bucket receiving allocation request. */ - -static char *memtop; /* top of heap */ - -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, - 67108864UL, 134217728UL, 268435456UL, 536870912UL, 1073741824UL, - 2147483648UL, 4294967296UL-1 -}; - -/* binsizes[x] == (1 << ((x) + 3)) */ -#define binsize(x) binsizes[(x)] - -/* Declarations for internal functions */ -static PTR_T internal_malloc __P((size_t, const char *, int, int)); -static PTR_T internal_realloc __P((PTR_T, size_t, const char *, int, int)); -static void internal_free __P((PTR_T, const char *, int, int)); -static PTR_T internal_memalign __P((unsigned int, size_t, const char *, int, int)); -#ifndef NO_CALLOC -static PTR_T internal_calloc __P((size_t, size_t, const char *, int, int)); -static void internal_cfree __P((PTR_T, const char *, int, int)); -#endif -#ifndef NO_VALLOC -static PTR_T internal_valloc __P((size_t, const char *, int, int)); -#endif - -#if defined (botch) -extern void botch (); -#else -static void botch __P((const char *, const char *, int)); -#endif -static void xbotch __P((PTR_T, int, const char *, const char *, int)); - -#if !HAVE_DECL_SBRK -extern char *sbrk (); -#endif /* !HAVE_DECL_SBRK */ - -#ifdef SHELL -extern int interrupt_immediately; -extern int signal_is_trapped __P((int)); -#endif - -#ifdef MALLOC_STATS -struct _malstats _mstats; -#endif /* MALLOC_STATS */ - -/* Debugging variables available to applications. */ -int malloc_flags = 0; /* future use */ -int malloc_trace = 0; /* trace allocations and frees to stderr */ -int malloc_register = 0; /* future use */ - -#ifdef MALLOC_TRACE -char _malloc_trace_buckets[NBUCKETS]; - -/* These should really go into a header file. */ -extern void mtrace_alloc __P((const char *, PTR_T, size_t, const char *, int)); -extern void mtrace_free __P((PTR_T, int, const char *, int)); -#endif - -#if !defined (botch) -static void -botch (s, file, line) -{ - fprintf (stderr, "malloc: failed assertion: %s\n", s); - (void)fflush (stderr); - abort (); -} -#endif - -/* print the file and line number that caused the assertion failure and - call botch() to do whatever the application wants with the information */ -static void -xbotch (mem, e, s, file, line) - PTR_T mem; - int e; - const char *s; - const char *file; - int line; -{ - fprintf (stderr, "\r\nmalloc: %s:%d: assertion botched\r\n", - file ? file : "unknown", line); -#ifdef MALLOC_REGISTER - if (mem != NULL && malloc_register) - mregister_describe_mem (mem, stderr); -#endif - (void)fflush (stderr); - botch(s, file, line); -} - -/* Coalesce two adjacent free blocks off the free list for size NU - 1, - as long as we can find two adjacent free blocks. nextf[NU -1] is - assumed to not be busy; the caller (morecore()) checks for this. */ -static void -bcoalesce (nu) - register int nu; -{ - register union mhead *mp, *mp1, *mp2; - register int nbuck; - unsigned long siz; - - nbuck = nu - 1; - if (nextf[nbuck] == 0) - return; - - siz = binsize (nbuck); - - mp2 = mp1 = nextf[nbuck]; - mp = CHAIN (mp1); - while (mp && mp != (union mhead *)((char *)mp1 + siz)) - { - mp2 = mp1; - mp1 = mp; - mp = CHAIN (mp); - } - if (mp == 0) - return; - - /* OK, now we have mp1 pointing to the block we want to add to nextf[NU]. - CHAIN(mp2) must equal mp1. Check that mp1 and mp are adjacent. */ - if (mp2 != mp1 && CHAIN(mp2) != mp1) - xbotch ((PTR_T)0, 0, "bcoalesce: CHAIN(mp2) != mp1", (char *)NULL, 0); - -#ifdef MALLOC_DEBUG - if (CHAIN (mp1) != (union mhead *)((char *)mp1 + siz)) - return; /* not adjacent */ -#endif - -#ifdef MALLOC_STATS - _mstats.tbcoalesce++; - _mstats.ncoalesce[nbuck]++; -#endif - - /* Since they are adjacent, remove them from the free list */ - if (mp1 == nextf[nbuck]) - nextf[nbuck] = CHAIN (mp); - else - CHAIN (mp2) = CHAIN (mp); - - /* And add the combined two blocks to nextf[NU]. */ - mp1->mh_alloc = ISFREE; - mp1->mh_index = nu; - CHAIN (mp1) = nextf[nu]; - nextf[nu] = mp1; -} - -/* Split a block at index > NU (but less than SPLIT_MAX) into a set of - blocks of the correct size, and attach them to nextf[NU]. nextf[NU] - is assumed to be empty. Must be called with signals blocked (e.g., - by morecore()). */ -static void -bsplit (nu) - register int nu; -{ - register union mhead *mp; - int nbuck, nblks, split_max; - unsigned long siz; - - split_max = (maxbuck > SPLIT_MAX) ? maxbuck : SPLIT_MAX; - - if (nu >= SPLIT_MID) - { - for (nbuck = split_max; nbuck > nu; nbuck--) - { - if (busy[nbuck] || nextf[nbuck] == 0) - continue; - break; - } - } - else - { - for (nbuck = nu + 1; nbuck <= split_max; nbuck++) - { - if (busy[nbuck] || nextf[nbuck] == 0) - continue; - break; - } - } - - if (nbuck > split_max || nbuck <= nu) - return; - - /* XXX might want to split only if nextf[nbuck] has >= 2 blocks free - and nbuck is below some threshold. */ - -#ifdef MALLOC_STATS - _mstats.tbsplit++; - _mstats.nsplit[nbuck]++; -#endif - - /* Figure out how many blocks we'll get. */ - siz = binsize (nu); - nblks = binsize (nbuck) / siz; - - /* Remove the block from the chain of larger blocks. */ - mp = nextf[nbuck]; - nextf[nbuck] = CHAIN (mp); - - /* Split the block and put it on the requested chain. */ - nextf[nu] = mp; - while (1) - { - mp->mh_alloc = ISFREE; - mp->mh_index = nu; - if (--nblks <= 0) break; - CHAIN (mp) = (union mhead *)((char *)mp + siz); - mp = (union mhead *)((char *)mp + siz); - } - CHAIN (mp) = 0; -} - -static void -block_signals (setp, osetp) - sigset_t *setp, *osetp; -{ -#ifdef HAVE_POSIX_SIGNALS - sigfillset (setp); - sigemptyset (osetp); - sigprocmask (SIG_BLOCK, setp, osetp); -#else -# if defined (HAVE_BSD_SIGNALS) - *osetp = sigsetmask (-1); -# endif -#endif -} - -static void -unblock_signals (setp, osetp) - sigset_t *setp, *osetp; -{ -#ifdef HAVE_POSIX_SIGNALS - sigprocmask (SIG_SETMASK, osetp, (sigset_t *)NULL); -#else -# if defined (HAVE_BSD_SIGNALS) - sigsetmask (*osetp); -# endif -#endif -} - -/* Return some memory to the system by reducing the break. This is only - called with NU > pagebucket, so we're always assured of giving back - more than one page of memory. */ -static void -lesscore (nu) /* give system back some memory */ - register int nu; /* size index we're discarding */ -{ - long siz; - - siz = binsize (nu); - /* Should check for errors here, I guess. */ - sbrk (-siz); - memtop -= siz; - -#ifdef MALLOC_STATS - _mstats.nsbrk++; - _mstats.tsbrk -= siz; - _mstats.nlesscore[nu]++; -#endif -} - -static void -morecore (nu) /* ask system for more memory */ - register int nu; /* size index to get more of */ -{ - register union mhead *mp; - register int nblks; - register long siz; - long sbrk_amt; /* amount to get via sbrk() */ - sigset_t set, oset; - int blocked_sigs; - - /* Block all signals in case we are executed from a signal handler. */ - blocked_sigs = 0; -#ifdef SHELL - if (interrupt_immediately || signal_is_trapped (SIGINT) || signal_is_trapped (SIGCHLD)) -#endif - { - block_signals (&set, &oset); - blocked_sigs = 1; - } - - siz = binsize (nu); /* size of desired block for nextf[nu] */ - - if (siz < 0) - goto morecore_done; /* oops */ - -#ifdef MALLOC_STATS - _mstats.nmorecore[nu]++; -#endif - - /* Try to split a larger block here, if we're within the range of sizes - to split. */ - if (nu >= SPLIT_MIN) - { - bsplit (nu); - if (nextf[nu] != 0) - goto morecore_done; - } - - /* Try to coalesce two adjacent blocks from the free list on nextf[nu - 1], - if we can, and we're withing the range of the block coalescing limits. */ - if (nu >= COMBINE_MIN && nu < COMBINE_MAX && busy[nu - 1] == 0 && nextf[nu - 1]) - { - bcoalesce (nu); - if (nextf[nu] != 0) - goto morecore_done; - } - - /* Take at least a page, and figure out how many blocks of the requested - size we're getting. */ - if (siz <= pagesz) - { - sbrk_amt = pagesz; - nblks = sbrk_amt / siz; - } - else - { - /* We always want to request an integral multiple of the page size - from the kernel, so let's compute whether or not `siz' is such - an amount. If it is, we can just request it. If not, we want - the smallest integral multiple of pagesize that is larger than - `siz' and will satisfy the request. */ - sbrk_amt = siz & (pagesz - 1); - if (sbrk_amt == 0) - sbrk_amt = siz; - else - sbrk_amt = siz + pagesz - sbrk_amt; - nblks = 1; - } - -#ifdef MALLOC_STATS - _mstats.nsbrk++; - _mstats.tsbrk += sbrk_amt; -#endif - - mp = (union mhead *) sbrk (sbrk_amt); - - /* Totally out of memory. */ - if ((long)mp == -1) - goto morecore_done; - - memtop += sbrk_amt; - - /* shouldn't happen, but just in case -- require 8-byte alignment */ - if ((long)mp & MALIGN_MASK) - { - mp = (union mhead *) (((long)mp + MALIGN_MASK) & ~MALIGN_MASK); - nblks--; - } - - /* save new header and link the nblks blocks together */ - nextf[nu] = mp; - while (1) - { - mp->mh_alloc = ISFREE; - mp->mh_index = nu; - if (--nblks <= 0) break; - CHAIN (mp) = (union mhead *)((char *)mp + siz); - mp = (union mhead *)((char *)mp + siz); - } - CHAIN (mp) = 0; - -morecore_done: - if (blocked_sigs) - unblock_signals (&set, &oset); -} - -static void -malloc_debug_dummy () -{ - write (1, "malloc_debug_dummy\n", 19); -} - -#define PREPOP_BIN 2 -#define PREPOP_SIZE 32 - -static int -pagealign () -{ - register long nbytes; - register int nunits; - register union mhead *mp; - long sbrk_needed; - char *curbrk; - - pagesz = getpagesize (); - if (pagesz < 1024) - pagesz = 1024; - - /* OK, how much do we need to allocate to make things page-aligned? - Some of this partial page will be wasted space, but we'll use as - much as we can. Once we figure out how much to advance the break - pointer, go ahead and do it. */ - memtop = curbrk = sbrk (0); - sbrk_needed = pagesz - ((long)curbrk & (pagesz - 1)); /* sbrk(0) % pagesz */ - if (sbrk_needed < 0) - sbrk_needed += pagesz; - - /* Now allocate the wasted space. */ - if (sbrk_needed) - { -#ifdef MALLOC_STATS - _mstats.nsbrk++; - _mstats.tsbrk += sbrk_needed; -#endif - curbrk = sbrk (sbrk_needed); - if ((long)curbrk == -1) - return -1; -#if 0 - memtop += sbrk_needed; - - /* Take the memory which would otherwise be wasted and populate the most - popular bin (2 == 32 bytes) with it. Add whatever we need to curbrk - to make things 32-byte aligned, compute how many 32-byte chunks we're - going to get, and set up the bin. */ - curbrk += sbrk_needed & (PREPOP_SIZE - 1); - sbrk_needed -= sbrk_needed & (PREPOP_SIZE - 1); - nunits = sbrk_needed / PREPOP_SIZE; - - mp = (union mhead *)curbrk; - - nextf[PREPOP_BIN] = mp; - while (1) - { - mp->mh_alloc = ISFREE; - mp->mh_index = PREPOP_BIN; - if (--nunits <= 0) break; - CHAIN(mp) = (union mhead *)((char *)mp + PREPOP_SIZE); - mp = (union mhead *)((char *)mp + PREPOP_SIZE); - } - CHAIN(mp) = 0; -#endif - } - - /* compute which bin corresponds to the page size. */ - for (nunits = 7; nunits < NBUCKETS; nunits++) - if (pagesz <= binsize(nunits)) - break; - pagebucket = nunits; - - return 0; -} - -static PTR_T -internal_malloc (n, file, line, flags) /* get a block */ - size_t n; - const char *file; - int line, flags; -{ - register union mhead *p; - register int nunits; - register char *m; - long nbytes; - - /* Get the system page size and align break pointer so future sbrks will - be page-aligned. The page size must be at least 1K -- anything - smaller is increased. */ - if (pagesz == 0) - if (pagealign () < 0) - return ((PTR_T)NULL); - - /* Figure out how many bytes are required, rounding up to the nearest - multiple of 8, then figure out which nextf[] area to use. Try to - be smart about where to start searching -- if the number of bytes - needed is greater than the page size, we can start at pagebucket. */ - nbytes = ALLOCATED_BYTES(n); - nunits = (nbytes <= (pagesz >> 1)) ? STARTBUCK : pagebucket; - for ( ; nunits < NBUCKETS; nunits++) - if (nbytes <= binsize(nunits)) - break; - - /* Silently reject too-large requests. */ - if (nunits >= NBUCKETS) - return ((PTR_T) NULL); - - /* In case this is reentrant use of malloc from signal handler, - pick a block size that no other malloc level is currently - trying to allocate. That's the easiest harmless way not to - interfere with the other level of execution. */ -#ifdef MALLOC_STATS - if (busy[nunits]) _mstats.nrecurse++; -#endif - while (busy[nunits]) nunits++; - busy[nunits] = 1; - - if (nunits > maxbuck) - maxbuck = nunits; - - /* If there are no blocks of the appropriate size, go get some */ - if (nextf[nunits] == 0) - morecore (nunits); - - /* Get one block off the list, and set the new list head */ - if ((p = nextf[nunits]) == NULL) - { - busy[nunits] = 0; - return NULL; - } - nextf[nunits] = CHAIN (p); - busy[nunits] = 0; - - /* Check for free block clobbered */ - /* If not for this check, we would gobble a clobbered free chain ptr - and bomb out on the NEXT allocate of this size block */ - if (p->mh_alloc != ISFREE || p->mh_index != nunits) - xbotch ((PTR_T)(p+1), 0, "malloc: block on free list clobbered", file, line); - - /* Fill in the info, and set up the magic numbers for range checking. */ - p->mh_alloc = ISALLOC; - p->mh_magic2 = MAGIC2; - p->mh_nbytes = n; - - /* End guard */ - m = (char *) (p + 1) + n; - *(u_bits32_t *)m = n; /* unaligned access on sparc? */ - -#ifdef MEMSCRAMBLE - m = (char *)(p+1); - MALLOC_MEMSET (m, 0xdf, n); /* scramble previous contents */ -#endif -#ifdef MALLOC_STATS - _mstats.nmalloc[nunits]++; - _mstats.tmalloc[nunits]++; - _mstats.nmal++; - _mstats.bytesreq += n; -#endif /* MALLOC_STATS */ - -#ifdef MALLOC_TRACE - if (malloc_trace && (flags & MALLOC_NOTRACE) == 0) - mtrace_alloc ("malloc", p + 1, n, file, line); - else if (_malloc_trace_buckets[nunits]) - mtrace_alloc ("malloc", p + 1, n, file, line); -#endif - -#ifdef MALLOC_REGISTER - if (malloc_register && (flags & MALLOC_NOREG) == 0) - mregister_alloc ("malloc", p + 1, n, file, line); -#endif - -#ifdef MALLOC_WATCH - if (_malloc_nwatch > 0) - _malloc_ckwatch (p + 1, file, line, W_ALLOC, n); -#endif - - return (PTR_T) (p + 1); -} - -static void -internal_free (mem, file, line, flags) - PTR_T mem; - const char *file; - int line, flags; -{ - register union mhead *p; - register char *ap; - register int nunits; - register unsigned int nbytes; - int ubytes; /* caller-requested size */ - - if ((ap = (char *)mem) == 0) - return; - - p = (union mhead *) ap - 1; - - if (p->mh_alloc == ISMEMALIGN) - { - ap -= p->mh_nbytes; - p = (union mhead *) ap - 1; - } - -#if defined (MALLOC_TRACE) || defined (MALLOC_REGISTER) - if (malloc_trace || malloc_register) - ubytes = p->mh_nbytes; -#endif - - if (p->mh_alloc != ISALLOC) - { - if (p->mh_alloc == ISFREE) - xbotch (mem, ERR_DUPFREE, - "free: called with already freed block argument", file, line); - else - xbotch (mem, ERR_UNALLOC, - "free: called with unallocated block argument", file, line); - } - - ASSERT (p->mh_magic2 == MAGIC2); - - nunits = p->mh_index; - nbytes = ALLOCATED_BYTES(p->mh_nbytes); - /* Since the sizeof(u_bits32_t) bytes before the memory handed to the user - are now used for the number of bytes allocated, a simple check of - mh_magic2 is no longer sufficient to catch things like p[-1] = 'x'. - We sanity-check the value of mh_nbytes against the size of the blocks - in the appropriate bucket before we use it. This can still cause problems - and obscure errors if mh_nbytes is wrong but still within range; the - checks against the size recorded at the end of the chunk will probably - fail then. Using MALLOC_REGISTER will help here, since it saves the - original number of bytes requested. */ - - if (IN_BUCKET(nbytes, nunits) == 0) - xbotch (mem, ERR_UNDERFLOW, - "free: underflow detected; mh_nbytes out of range", file, line); - - ap += p->mh_nbytes; - if (*(u_bits32_t *)ap != p->mh_nbytes) - xbotch (mem, ERR_ASSERT_FAILED, "free: start and end chunk sizes differ", file, line); - -#if 1 - if (nunits >= LESSCORE_MIN && ((char *)p + binsize(nunits) == memtop)) -#else - if (((char *)p + binsize(nunits) == memtop) && nunits >= LESSCORE_MIN) -#endif - { - /* If above LESSCORE_FRC, give back unconditionally. This should be set - high enough to be infrequently encountered. If between LESSCORE_MIN - and LESSCORE_FRC, call lesscore if the bucket is marked as busy (in - which case we would punt below and leak memory) or if there's already - a block on the free list. */ - if ((nunits >= LESSCORE_FRC) || busy[nunits] || nextf[nunits] != 0) - { - lesscore (nunits); - /* keeps the tracing and registering code in one place */ - goto free_return; - } - } - -#ifdef MEMSCRAMBLE - MALLOC_MEMSET (mem, 0xcf, p->mh_nbytes); -#endif - - ASSERT (nunits < NBUCKETS); - p->mh_alloc = ISFREE; - - if (busy[nunits] == 1) - return; /* this is bogus, but at least it won't corrupt the chains */ - - /* Protect against signal handlers calling malloc. */ - busy[nunits] = 1; - /* Put this block on the free list. */ - CHAIN (p) = nextf[nunits]; - nextf[nunits] = p; - busy[nunits] = 0; - -free_return: - -#ifdef MALLOC_STATS - _mstats.nmalloc[nunits]--; - _mstats.nfre++; -#endif /* MALLOC_STATS */ - -#ifdef MALLOC_TRACE - if (malloc_trace && (flags & MALLOC_NOTRACE) == 0) - mtrace_free (mem, ubytes, file, line); - else if (_malloc_trace_buckets[nunits]) - mtrace_free (mem, ubytes, file, line); -#endif - -#ifdef MALLOC_REGISTER - if (malloc_register && (flags & MALLOC_NOREG) == 0) - mregister_free (mem, ubytes, file, line); -#endif - -#ifdef MALLOC_WATCH - if (_malloc_nwatch > 0) - _malloc_ckwatch (mem, file, line, W_FREE, ubytes); -#endif - -} - -static PTR_T -internal_realloc (mem, n, file, line, flags) - PTR_T mem; - register size_t n; - const char *file; - int line, flags; -{ - register union mhead *p; - register u_bits32_t tocopy; - register unsigned int nbytes; - register int nunits; - register char *m; - -#ifdef MALLOC_STATS - _mstats.nrealloc++; -#endif - - if (n == 0) - { - internal_free (mem, file, line, MALLOC_INTERNAL); - return (NULL); - } - if ((p = (union mhead *) mem) == 0) - return internal_malloc (n, file, line, MALLOC_INTERNAL); - - p--; - nunits = p->mh_index; - ASSERT (nunits < NBUCKETS); - - if (p->mh_alloc != ISALLOC) - xbotch (mem, ERR_UNALLOC, - "realloc: called with unallocated block argument", file, line); - - ASSERT (p->mh_magic2 == MAGIC2); - nbytes = ALLOCATED_BYTES(p->mh_nbytes); - /* Since the sizeof(u_bits32_t) bytes before the memory handed to the user - are now used for the number of bytes allocated, a simple check of - mh_magic2 is no longer sufficient to catch things like p[-1] = 'x'. - We sanity-check the value of mh_nbytes against the size of the blocks - in the appropriate bucket before we use it. This can still cause problems - and obscure errors if mh_nbytes is wrong but still within range; the - checks against the size recorded at the end of the chunk will probably - fail then. Using MALLOC_REGISTER will help here, since it saves the - original number of bytes requested. */ - if (IN_BUCKET(nbytes, nunits) == 0) - xbotch (mem, ERR_UNDERFLOW, - "realloc: underflow detected; mh_nbytes out of range", file, line); - - m = (char *)mem + (tocopy = p->mh_nbytes); - if (*(u_bits32_t *)m != p->mh_nbytes) - xbotch (mem, ERR_ASSERT_FAILED, "realloc: start and end chunk sizes differ", file, line); - -#ifdef MALLOC_WATCH - if (_malloc_nwatch > 0) - _malloc_ckwatch (p + 1, file, line, W_REALLOC, n); -#endif -#ifdef MALLOC_STATS - _mstats.bytesreq += (n < tocopy) ? 0 : n - tocopy; -#endif - - /* See if desired size rounds to same power of 2 as actual size. */ - nbytes = ALLOCATED_BYTES(n); - - /* If ok, use the same block, just marking its size as changed. */ - if (RIGHT_BUCKET(nbytes, nunits)) - { - *m++ = 0; *m++ = 0; *m++ = 0; *m++ = 0; - m = (char *)mem + (p->mh_nbytes = n); - *(u_bits32_t *)m = p->mh_nbytes; - return mem; - } - - if (n < tocopy) - tocopy = n; - -#ifdef MALLOC_STATS - _mstats.nrcopy++; -#endif - - if ((m = internal_malloc (n, file, line, MALLOC_INTERNAL|MALLOC_NOTRACE|MALLOC_NOREG)) == 0) - return 0; - FASTCOPY (mem, m, tocopy); - internal_free (mem, file, line, MALLOC_INTERNAL); - -#ifdef MALLOC_TRACE - if (malloc_trace && (flags & MALLOC_NOTRACE) == 0) - mtrace_alloc ("realloc", m, n, file, line); - else if (_malloc_trace_buckets[nunits]) - mtrace_alloc ("realloc", m, n, file, line); -#endif - -#ifdef MALLOC_REGISTER - if (malloc_register && (flags & MALLOC_NOREG) == 0) - mregister_alloc ("realloc", m, n, file, line); -#endif - -#ifdef MALLOC_WATCH - if (_malloc_nwatch > 0) - _malloc_ckwatch (m, file, line, W_RESIZED, n); -#endif - - return m; -} - -static PTR_T -internal_memalign (alignment, size, file, line, flags) - unsigned int alignment; - size_t size; - const char *file; - int line, flags; -{ - register char *ptr; - register char *aligned; - register union mhead *p; - - ptr = internal_malloc (size + alignment, file, line, MALLOC_INTERNAL); - - if (ptr == 0) - return 0; - /* If entire block has the desired alignment, just accept it. */ - if (((long) ptr & (alignment - 1)) == 0) - return ptr; - /* Otherwise, get address of byte in the block that has that alignment. */ -#if 0 - aligned = (char *) (((long) ptr + alignment - 1) & -alignment); -#else - aligned = (char *) (((long) ptr + alignment - 1) & (~alignment + 1)); -#endif - - /* Store a suitable indication of how to free the block, - so that free can find the true beginning of it. */ - p = (union mhead *) aligned - 1; - p->mh_nbytes = aligned - ptr; - p->mh_alloc = ISMEMALIGN; - - return aligned; -} - -#if !defined (NO_VALLOC) -/* This runs into trouble with getpagesize on HPUX, and Multimax machines. - Patching out seems cleaner than the ugly fix needed. */ -static PTR_T -internal_valloc (size, file, line, flags) - size_t size; - const char *file; - int line, flags; -{ - return internal_memalign (getpagesize (), size, file, line, flags|MALLOC_INTERNAL); -} -#endif /* !NO_VALLOC */ - -#ifndef NO_CALLOC -static PTR_T -internal_calloc (n, s, file, line, flags) - size_t n, s; - const char *file; - int line, flags; -{ - size_t total; - PTR_T result; - - total = n * s; - result = internal_malloc (total, file, line, flags|MALLOC_INTERNAL); - if (result) - memset (result, 0, total); - return result; -} - -static void -internal_cfree (p, file, line, flags) - PTR_T p; - const char *file; - int line, flags; -{ - internal_free (p, file, line, flags|MALLOC_INTERNAL); -} -#endif /* !NO_CALLOC */ - -#ifdef MALLOC_STATS -int -malloc_free_blocks (size) - int size; -{ - int nfree; - register union mhead *p; - - nfree = 0; - for (p = nextf[size]; p; p = CHAIN (p)) - nfree++; - - return nfree; -} -#endif - -#if defined (MALLOC_WRAPFUNCS) -PTR_T -sh_malloc (bytes, file, line) - size_t bytes; - const char *file; - int line; -{ - return internal_malloc (bytes, file, line, MALLOC_WRAPPER); -} - -PTR_T -sh_realloc (ptr, size, file, line) - PTR_T ptr; - size_t size; - const char *file; - int line; -{ - return internal_realloc (ptr, size, file, line, MALLOC_WRAPPER); -} - -void -sh_free (mem, file, line) - PTR_T mem; - const char *file; - int line; -{ - internal_free (mem, file, line, MALLOC_WRAPPER); -} - -PTR_T -sh_memalign (alignment, size, file, line) - unsigned int alignment; - size_t size; - const char *file; - int line; -{ - return internal_memalign (alignment, size, file, line, MALLOC_WRAPPER); -} - -#ifndef NO_CALLOC -PTR_T -sh_calloc (n, s, file, line) - size_t n, s; - const char *file; - int line; -{ - return internal_calloc (n, s, file, line, MALLOC_WRAPPER); -} - -void -sh_cfree (mem, file, line) - PTR_T mem; - const char *file; - int line; -{ - internal_cfree (mem, file, line, MALLOC_WRAPPER); -} -#endif - -#ifndef NO_VALLOC -PTR_T -sh_valloc (size, file, line) - size_t size; - const char *file; - int line; -{ - return internal_valloc (size, file, line, MALLOC_WRAPPER); -} -#endif /* !NO_VALLOC */ - -#endif /* MALLOC_WRAPFUNCS */ - -/* Externally-available functions that call their internal counterparts. */ - -PTR_T -malloc (size) - size_t size; -{ - return internal_malloc (size, (char *)NULL, 0, 0); -} - -PTR_T -realloc (mem, nbytes) - PTR_T mem; - size_t nbytes; -{ - return internal_realloc (mem, nbytes, (char *)NULL, 0, 0); -} - -void -free (mem) - PTR_T mem; -{ - internal_free (mem, (char *)NULL, 0, 0); -} - -PTR_T -memalign (alignment, size) - unsigned int alignment; - size_t size; -{ - return internal_memalign (alignment, size, (char *)NULL, 0, 0); -} - -#ifndef NO_VALLOC -PTR_T -valloc (size) - size_t size; -{ - return internal_valloc (size, (char *)NULL, 0, 0); -} -#endif - -#ifndef NO_CALLOC -PTR_T -calloc (n, s) - size_t n, s; -{ - return internal_calloc (n, s, (char *)NULL, 0, 0); -} - -void -cfree (mem) - PTR_T mem; -{ - internal_cfree (mem, (char *)NULL, 0, 0); -} -#endif diff --git a/lib/readline/copyright-comment b/lib/readline/copyright-comment deleted file mode 100644 index eea44d2e4..000000000 --- a/lib/readline/copyright-comment +++ /dev/null @@ -1,12 +0,0 @@ - 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 3 of the License, 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. If not, see . diff --git a/lib/readline/copyright-history b/lib/readline/copyright-history deleted file mode 100644 index 6e7422e55..000000000 --- a/lib/readline/copyright-history +++ /dev/null @@ -1,12 +0,0 @@ - History is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - History 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 History. If not, see . diff --git a/lib/readline/ddd1 b/lib/readline/ddd1 deleted file mode 100644 index fe1e36314..000000000 --- a/lib/readline/ddd1 +++ /dev/null @@ -1,163 +0,0 @@ -*** ../../../bash-20081120/lib/readline/display.c 2008-11-13 09:55:19.000000000 -0500 ---- display.c 2008-11-28 23:37:26.000000000 -0500 -*************** -*** 497,501 **** - register char *line; - int inv_botlin, lb_botlin, lb_linenum, o_cpos; -! int newlines, lpos, temp, n0, num; - char *prompt_this_line; - #if defined (HANDLE_MULTIBYTE) ---- 497,501 ---- - register char *line; - int inv_botlin, lb_botlin, lb_linenum, o_cpos; -! int newlines, lpos, temp, n0, num, prompt_lines_estimate; - char *prompt_this_line; - #if defined (HANDLE_MULTIBYTE) -*************** -*** 664,668 **** - the first physical line of the prompt. - wrap_offset - prompt_invis_chars_first_line is the number of invis -! chars on the second line. */ - - /* what if lpos is already >= _rl_screenwidth before we start drawing the ---- 664,671 ---- - the first physical line of the prompt. - wrap_offset - prompt_invis_chars_first_line is the number of invis -! chars on the second (or, more generally, last) line. */ -! -! /* This is zero-based, used to set the newlines */ -! prompt_lines_estimate = lpos / _rl_screenwidth; - - /* what if lpos is already >= _rl_screenwidth before we start drawing the -*************** -*** 702,710 **** - - /* 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)); - - inv_lbreaks[++newlines] = temp; ---- 705,713 ---- - - /* Now account for invisible characters in the current line. */ -! /* XXX - this assumes that the invisible characters may be split, but only -! between the first and the last lines. */ - temp += ((local_prompt_prefix == 0) ? ((newlines == 0) ? prompt_invis_chars_first_line -! : ((newlines == prompt_lines_estimate) ? wrap_offset : prompt_invis_chars_first_line)) -! : ((newlines == 0) ? wrap_offset : 0)); - - inv_lbreaks[++newlines] = temp; -*************** -*** 969,973 **** - is an absolute cursor position in a multibyte locale. See - if compensating here is the right thing, or if we have to -! 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 ---- 972,976 ---- - is an absolute cursor position in a multibyte locale. See - if compensating here is the right thing, or if we have to -! change update_line itself. There are several cases in which - update_line adjusts _rl_last_c_pos itself (so it can pass - _rl_move_cursor_relative accurate values); it communicates -*************** -*** 1609,1614 **** - _rl_term_IC or _rl_term_ic will screw up the screen because of the - invisible characters. We need to just draw them. */ -! if (*ols && (!_rl_horizontal_scroll_mode || _rl_last_c_pos > 0 || -! lendiff <= prompt_visible_length || !current_invis_chars)) - { - insert_some_chars (nfd, lendiff, col_lendiff); ---- 1612,1626 ---- - _rl_term_IC or _rl_term_ic will screw up the screen because of the - invisible characters. We need to just draw them. */ -! /* The same thing happens if we're trying to draw before the last -! invisible character in the prompt string and we're not drawing -! the entire prompt string. */ -! if (*ols && ((_rl_horizontal_scroll_mode && -! _rl_last_c_pos == 0 && -! lendiff > prompt_visible_length && -! current_invis_chars > 0) == 0) && -! (((MB_CUR_MAX > 1 && rl_byte_oriented == 0) && -! current_line == 0 && wrap_offset && -! ((nfd - new) <= prompt_last_invisible) && -! (col_lendiff < prompt_visible_length)) == 0)) - { - insert_some_chars (nfd, lendiff, col_lendiff); -*************** -*** 1631,1635 **** - adjust _rl_last_c_pos to account for wrap_offset and set - cpos_adjusted to let the caller know. */ -! if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) - { - _rl_last_c_pos -= wrap_offset; ---- 1643,1647 ---- - adjust _rl_last_c_pos to account for wrap_offset and set - cpos_adjusted to let the caller know. */ -! if ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) && current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) - { - _rl_last_c_pos -= wrap_offset; -*************** -*** 1652,1655 **** ---- 1664,1675 ---- - twidth = temp - lendiff; - _rl_last_c_pos += twidth; -+ /* If nfd begins before any invisible characters in the prompt, -+ adjust _rl_last_c_pos to account for wrap_offset and set -+ cpos_adjusted to let the caller know. */ -+ if ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) && current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) -+ { -+ _rl_last_c_pos -= wrap_offset; -+ cpos_adjusted = 1; -+ } - } - } -*************** -*** 1663,1666 **** ---- 1683,1694 ---- - characters) we need to adjust _rl_last_c_pos, since it represents - a physical character position. */ -+ if ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) && -+ current_line == prompt_last_screen_line && wrap_offset && -+ wrap_offset != prompt_invis_chars_first_line && -+ ((nfd-new) < (prompt_last_invisible-(current_line*_rl_screenwidth)))) -+ { -+ _rl_last_c_pos -= wrap_offset - prompt_invis_chars_first_line; -+ cpos_adjusted = 1; -+ } - } - } -*************** -*** 1728,1732 **** ---- 1756,1769 ---- - col_lendiff = lendiff; - -+ #if 0 - if (col_lendiff) -+ #else -+ /* If we've already printed over the entire width of the screen, -+ including the old material, then col_lendiff doesn't matter and -+ space_to_eol will insert too many spaces. XXX - maybe we should -+ adjust col_lendiff based on the difference between _rl_last_c_pos -+ and _rl_screenwidth */ -+ if (col_lendiff && (_rl_last_c_pos < _rl_screenwidth)) -+ #endif - { - if (_rl_term_autowrap && current_line < inv_botlin) -*************** -*** 1863,1867 **** - _rl_last_v_pos == prompt_last_screen_line && - wrap_offset != woff && -! new > (prompt_last_invisible-_rl_screenwidth-wrap_offset))) - { - dpos -= woff; ---- 1900,1905 ---- - _rl_last_v_pos == prompt_last_screen_line && - wrap_offset != woff && -! new > (prompt_last_invisible-(_rl_screenwidth*_rl_last_v_pos)-wrap_offset))) -! /* XXX last comparison might need to be >= */ - { - dpos -= woff; diff --git a/lib/readline/menucomp b/lib/readline/menucomp deleted file mode 100644 index c4deca5e8..000000000 --- a/lib/readline/menucomp +++ /dev/null @@ -1,276 +0,0 @@ -/* An initial implementation of a menu completion function a la tcsh. The - first time (if the last readline command was not rl_menu_complete), we - generate the list of matches. This code is very similar to the code in - rl_complete_internal -- there should be a way to combine the two. Then, - for each item in the list of matches, we insert the match in an undoable - fashion, with the appropriate character appended (this happens on the - second and subsequent consecutive calls to rl_menu_complete). When we - hit the end of the match list, we restore the original unmatched text, - ring the bell, and reset the counter to zero. */ -int -rl_old_menu_complete (count, ignore) - int count, ignore; -{ - rl_compentry_func_t *our_func; - int matching_filenames, found_quote; - - static char *orig_text; - static char **matches = (char **)0; - static int match_list_index = 0; - static int match_list_size = 0; - static int orig_start, orig_end; - static char quote_char; - static int delimiter; - - /* The first time through, we generate the list of matches and set things - up to insert them. */ - if (rl_last_func != rl_menu_complete) - { - /* Clean up from previous call, if any. */ - FREE (orig_text); - if (matches) - _rl_free_match_list (matches); - - match_list_index = match_list_size = 0; - matches = (char **)NULL; - - /* Only the completion entry function can change these. */ - set_completion_defaults ('%'); - - our_func = rl_menu_completion_entry_function; - if (our_func == 0) - our_func = rl_completion_entry_function - ? rl_completion_entry_function - : rl_filename_completion_function; - - /* We now look backwards for the start of a filename/variable word. */ - orig_end = rl_point; - found_quote = delimiter = 0; - quote_char = '\0'; - - if (rl_point) - /* This (possibly) changes rl_point. If it returns a non-zero char, - we know we have an open quote. */ - quote_char = _rl_find_completion_word (&found_quote, &delimiter); - - orig_start = rl_point; - rl_point = orig_end; - - orig_text = rl_copy_text (orig_start, orig_end); - matches = gen_completion_matches (orig_text, orig_start, orig_end, - our_func, found_quote, quote_char); - - /* If we are matching filenames, the attempted completion function will - have set rl_filename_completion_desired to a non-zero value. The basic - rl_filename_completion_function does this. */ - matching_filenames = rl_filename_completion_desired; - - if (matches == 0 || postprocess_matches (&matches, matching_filenames) == 0) - { - rl_ding (); - FREE (matches); - matches = (char **)0; - FREE (orig_text); - orig_text = (char *)0; - completion_changed_buffer = 0; - return (0); - } - - for (match_list_size = 0; matches[match_list_size]; match_list_size++) - ; - /* matches[0] is lcd if match_list_size > 1, but the circular buffer - code below should take care of it. */ - - if (match_list_size > 1 && _rl_complete_show_all) - display_matches (matches); - } - - /* Now we have the list of matches. Replace the text between - rl_line_buffer[orig_start] and rl_line_buffer[rl_point] with - matches[match_list_index], and add any necessary closing char. */ - - if (matches == 0 || match_list_size == 0) - { - rl_ding (); - FREE (matches); - matches = (char **)0; - completion_changed_buffer = 0; - return (0); - } - - match_list_index += count; - if (match_list_index < 0) - match_list_index += match_list_size; - else - match_list_index %= match_list_size; - - if (match_list_index == 0 && match_list_size > 1) - { - rl_ding (); - insert_match (orig_text, orig_start, MULT_MATCH, "e_char); - } - else - { - insert_match (matches[match_list_index], orig_start, SINGLE_MATCH, "e_char); - append_to_match (matches[match_list_index], delimiter, quote_char, - strcmp (orig_text, matches[match_list_index])); - } - - completion_changed_buffer = 1; - return (0); -} - -int -rl_menu_complete (count, ignore) - int count, ignore; -{ - rl_compentry_func_t *our_func; - int matching_filenames, found_quote; - - static char *orig_text; - static char **matches = (char **)0; - static int match_list_index = 0; - static int match_list_size = 0; - static int nontrivial_lcd = 0; - static int full_completion = 0; /* set to 1 if menu completion should reinitialize on next call */ - static int orig_start, orig_end; - static char quote_char; - static int delimiter; - - /* The first time through, we generate the list of matches and set things - up to insert them. */ - if (rl_last_func != rl_menu_complete || full_completion) - { - /* Clean up from previous call, if any. */ - FREE (orig_text); - if (matches) - _rl_free_match_list (matches); - - match_list_index = match_list_size = 0; - matches = (char **)NULL; - - full_completion = 0; - - /* Only the completion entry function can change these. */ - set_completion_defaults ('%'); - - our_func = rl_menu_completion_entry_function; - if (our_func == 0) - our_func = rl_completion_entry_function - ? rl_completion_entry_function - : rl_filename_completion_function; - - /* We now look backwards for the start of a filename/variable word. */ - orig_end = rl_point; - found_quote = delimiter = 0; - quote_char = '\0'; - - if (rl_point) - /* This (possibly) changes rl_point. If it returns a non-zero char, - we know we have an open quote. */ - quote_char = _rl_find_completion_word (&found_quote, &delimiter); - - orig_start = rl_point; - rl_point = orig_end; - - orig_text = rl_copy_text (orig_start, orig_end); - matches = gen_completion_matches (orig_text, orig_start, orig_end, - our_func, found_quote, quote_char); - - nontrivial_lcd = matches && strcmp (orig_text, matches[0]) != 0; - - /* If we are matching filenames, the attempted completion function will - have set rl_filename_completion_desired to a non-zero value. The basic - rl_filename_completion_function does this. */ - matching_filenames = rl_filename_completion_desired; - - if (matches == 0 || postprocess_matches (&matches, matching_filenames) == 0) - { - rl_ding (); - FREE (matches); - matches = (char **)0; - FREE (orig_text); - orig_text = (char *)0; - completion_changed_buffer = 0; - return (0); - } - - for (match_list_size = 0; matches[match_list_size]; match_list_size++) - ; - - if (match_list_size == 0) - { - rl_ding (); - FREE (matches); - matches = (char **)0; - match_list_index = 0; - completion_changed_buffer = 0; - return (0); - } - - /* matches[0] is lcd if match_list_size > 1, but the circular buffer - code below should take care of it. */ - if (*matches[0]) - { - insert_match (matches[0], orig_start, matches[1] ? MULT_MATCH : SINGLE_MATCH, "e_char); - orig_end = orig_start + strlen (matches[0]); - completion_changed_buffer = STREQ (orig_text, matches[0]) == 0; - } - - if (match_list_size > 1 && _rl_complete_show_all) - { - display_matches (matches); - /* If there are so many matches that the user has to be asked - whether or not he wants to see the matches, menu completion - is unwieldy. */ - if (rl_completion_query_items > 0 && match_list_size >= rl_completion_query_items) - { - rl_ding (); - FREE (matches); - matches = (char **)0; - full_completion = 1; - return (0); - } - } - else if (match_list_size <= 1) - { - append_to_match (matches[0], delimiter, quote_char, nontrivial_lcd); - full_completion = 1; - return (0); - } - } - - /* Now we have the list of matches. Replace the text between - rl_line_buffer[orig_start] and rl_line_buffer[rl_point] with - matches[match_list_index], and add any necessary closing char. */ - - if (matches == 0 || match_list_size == 0) - { - rl_ding (); - FREE (matches); - matches = (char **)0; - completion_changed_buffer = 0; - return (0); - } - - match_list_index += count; - if (match_list_index < 0) - match_list_index += match_list_size; - else - match_list_index %= match_list_size; - - if (match_list_index == 0 && match_list_size > 1) - { - rl_ding (); - insert_match (matches[0], orig_start, MULT_MATCH, "e_char); - } - else - { - insert_match (matches[match_list_index], orig_start, SINGLE_MATCH, "e_char); - append_to_match (matches[match_list_index], delimiter, quote_char, - strcmp (orig_text, matches[match_list_index])); - } - - completion_changed_buffer = 1; - return (0); -} diff --git a/lib/sh/shmatch.c.debug b/lib/sh/shmatch.c.debug deleted file mode 100644 index 2459ddaf1..000000000 --- a/lib/sh/shmatch.c.debug +++ /dev/null @@ -1,127 +0,0 @@ -/* Copyright (C) 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. */ - -/* - * shmatch.c -- shell interface to posix regular expression matching. - */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#if defined (HAVE_POSIX_REGEXP) - -#ifdef HAVE_UNISTD_H -# include -#endif - -#include "bashansi.h" - -#include -#include - -#include "shell.h" -#include "variables.h" -#include "externs.h" - -extern int glob_ignore_case, match_ignore_case; - -int -sh_regmatch (string, pattern, flags) - const char *string; - const char *pattern; - int flags; -{ - regex_t regex = { 0 }; - regmatch_t *matches; - int rflags; -#if defined (ARRAY_VARS) - SHELL_VAR *rematch; - ARRAY *amatch; - int subexp_ind; - char *subexp_str; - int subexp_len; -#endif - int result, r; - -#if defined (ARRAY_VARS) - rematch = (SHELL_VAR *)NULL; -#endif - - rflags = REG_EXTENDED; - if (glob_ignore_case || match_ignore_case) - rflags |= REG_ICASE; -#if !defined (ARRAY_VARS) - rflags |= REG_NOSUB; -#endif - - if (regcomp (®ex, pattern, rflags)) - return 2; /* flag for printing a warning here. */ - -#if defined (ARRAY_VARS) - matches = (regmatch_t *)malloc (sizeof (regmatch_t) * (regex.re_nsub + 1)); -#else - matches = NULL; -#endif - - if (r = regexec (®ex, string, regex.re_nsub + 1, matches, 0)) - result = EXECUTION_FAILURE; - else - result = EXECUTION_SUCCESS; /* match */ - - if (r != 0) { - char errbuf[1024]; - - regerror(r, ®ex, errbuf, sizeof(errbuf)); - fprintf(stderr, "sh_regmatch: match failed: %s\n", errbuf); - } - -#if defined (ARRAY_VARS) - subexp_len = strlen (string) + 10; - subexp_str = malloc (subexp_len + 1); - - /* Store the parenthesized subexpressions in the array BASH_REMATCH. - Element 0 is the portion that matched the entire regexp. Element 1 - is the part that matched the first subexpression, and so on. */ - unbind_variable ("BASH_REMATCH"); - rematch = make_new_array_variable ("BASH_REMATCH"); - amatch = array_cell (rematch); - - if ((flags & SHMAT_SUBEXP) && result == EXECUTION_SUCCESS && subexp_str) - { - for (subexp_ind = 0; subexp_ind <= regex.re_nsub; subexp_ind++) - { - memset (subexp_str, 0, subexp_len); - strncpy (subexp_str, string + matches[subexp_ind].rm_so, - matches[subexp_ind].rm_eo - matches[subexp_ind].rm_so); - array_insert (amatch, subexp_ind, subexp_str); - } - } - - VSETATTR (rematch, att_readonly); - - free (subexp_str); - free (matches); -#endif /* ARRAY_VARS */ - - regfree (®ex); - - return result; -} - -#endif /* HAVE_POSIX_REGEXP */ diff --git a/mksyntax.c.gettext b/mksyntax.c.gettext deleted file mode 100644 index b93e57932..000000000 --- a/mksyntax.c.gettext +++ /dev/null @@ -1,417 +0,0 @@ -/* - * mksyntax.c - construct shell syntax table for fast char attribute lookup. - */ - -/* Copyright (C) 2000-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" - -#include -#include "bashansi.h" -#include "chartypes.h" -#include - -#ifdef HAVE_UNISTD_H -# include -#endif - -#include "bashintl.h" - -#include "syntax.h" - -extern int optind; -extern char *optarg; - -#ifndef errno -extern int errno; -#endif - -#ifndef HAVE_STRERROR -extern char *strerror(); -#endif - -struct wordflag { - int flag; - char *fstr; -} wordflags[] = { - { CWORD, "CWORD" }, - { CSHMETA, "CSHMETA" }, - { CSHBRK, "CSHBRK" }, - { CBACKQ, "CBACKQ" }, - { CQUOTE, "CQUOTE" }, - { CSPECL, "CSPECL" }, - { CEXP, "CEXP" }, - { CBSDQUOTE, "CBSDQUOTE" }, - { CBSHDOC, "CBSHDOC" }, - { CGLOB, "CGLOB" }, - { CXGLOB, "CXGLOB" }, - { CXQUOTE, "CXQUOTE" }, - { CSPECVAR, "CSPECVAR" }, - { CSUBSTOP, "CSUBSTOP" }, - { CBLANK, "CBLANK" }, -}; - -#define N_WFLAGS (sizeof (wordflags) / sizeof (wordflags[0])) -#define SYNSIZE 256 - -int lsyntax[SYNSIZE]; -int debug; -char *progname; - -char preamble[] = "\ -/*\n\ - * This file was generated by mksyntax. DO NOT EDIT.\n\ - */\n\ -\n"; - -char includes[] = "\ -#include \"config.h\"\n\ -#include \"stdc.h\"\n\ -#include \"syntax.h\"\n\n"; - -static void -usage() -{ - fprintf (stderr, _("%s: usage: %s [-d] [-o filename]\n"), progname, progname); - exit (2); -} - -#ifdef INCLUDE_UNUSED -static int -getcflag (s) - char *s; -{ - int i; - - for (i = 0; i < N_WFLAGS; i++) - if (strcmp (s, wordflags[i].fstr) == 0) - return wordflags[i].flag; - return -1; -} -#endif - -static char * -cdesc (i) - int i; -{ - static char xbuf[16]; - - if (i == ' ') - return "SPC"; - else if (ISPRINT (i)) - { - xbuf[0] = i; - xbuf[1] = '\0'; - return (xbuf); - } - else if (i == CTLESC) - return "CTLESC"; - else if (i == CTLNUL) - return "CTLNUL"; - else if (i == '\033') /* ASCII */ - return "ESC"; - - xbuf[0] = '\\'; - xbuf[2] = '\0'; - - switch (i) - { -#ifdef __STDC__ - case '\a': xbuf[1] = 'a'; break; - case '\v': xbuf[1] = 'v'; break; -#else - case '\007': xbuf[1] = 'a'; break; - case 0x0B: xbuf[1] = 'v'; break; -#endif - case '\b': xbuf[1] = 'b'; break; - case '\f': xbuf[1] = 'f'; break; - case '\n': xbuf[1] = 'n'; break; - case '\r': xbuf[1] = 'r'; break; - case '\t': xbuf[1] = 't'; break; - default: sprintf (xbuf, "%d", i); break; - } - - return xbuf; -} - -static char * -getcstr (f) - int f; -{ - int i; - - for (i = 0; i < N_WFLAGS; i++) - if (f == wordflags[i].flag) - return (wordflags[i].fstr); - return ((char *)NULL); -} - -static void -addcstr (str, flag) - char *str; - int flag; -{ - char *s, *fstr; - unsigned char uc; - - for (s = str; s && *s; s++) - { - uc = *s; - - if (debug) - { - fstr = getcstr (flag); - fprintf(stderr, _("added %s for character %s\n"), fstr, cdesc(uc)); - } - - lsyntax[uc] |= flag; - } -} - -static void -addcchar (c, flag) - unsigned char c; - int flag; -{ - char *fstr; - - if (debug) - { - fstr = getcstr (flag); - fprintf (stderr, _("added %s for character %s\n"), fstr, cdesc(c)); - } - lsyntax[c] |= flag; -} - -static void -addblanks () -{ - register int i; - unsigned char uc; - - for (i = 0; i < SYNSIZE; i++) - { - uc = i; - /* Since we don't call setlocale(), this defaults to the "C" locale, and - the default blank characters will be space and tab. */ - if (isblank (uc)) - lsyntax[uc] |= CBLANK; - } -} - -/* load up the correct flag values in lsyntax */ -static void -load_lsyntax () -{ - /* shell metacharacters */ - addcstr (shell_meta_chars, CSHMETA); - - /* shell word break characters */ - addcstr (shell_break_chars, CSHBRK); - - addcchar ('`', CBACKQ); - - addcstr (shell_quote_chars, CQUOTE); - - addcchar (CTLESC, CSPECL); - addcchar (CTLNUL, CSPECL); - - addcstr (shell_exp_chars, CEXP); - - addcstr (slashify_in_quotes, CBSDQUOTE); - addcstr (slashify_in_here_document, CBSHDOC); - - addcstr (shell_glob_chars, CGLOB); - -#if defined (EXTENDED_GLOB) - addcstr (ext_glob_chars, CXGLOB); -#endif - - addcstr (shell_quote_chars, CXQUOTE); - addcchar ('\\', CXQUOTE); - - addcstr ("@*#?-$!", CSPECVAR); /* omits $0...$9 and $_ */ - - addcstr ("-=?+", CSUBSTOP); /* OP in ${paramOPword} */ - - addblanks (); -} - -static void -dump_lflags (fp, ind) - FILE *fp; - int ind; -{ - int xflags, first, i; - - xflags = lsyntax[ind]; - first = 1; - - if (xflags == 0) - fputs (wordflags[0].fstr, fp); - else - { - for (i = 1; i < N_WFLAGS; i++) - if (xflags & wordflags[i].flag) - { - if (first) - first = 0; - else - putc ('|', fp); - fputs (wordflags[i].fstr, fp); - } - } -} - -static void -wcomment (fp, i) - FILE *fp; - int i; -{ - fputs ("\t\t/* ", fp); - - fprintf (fp, "%s", cdesc(i)); - - fputs (" */", fp); -} - -static void -dump_lsyntax (fp) - FILE *fp; -{ - int i; - - fprintf (fp, "int sh_syntabsiz = %d;\n", SYNSIZE); - fprintf (fp, "int sh_syntaxtab[%d] = {\n", SYNSIZE); - - for (i = 0; i < SYNSIZE; i++) - { - putc ('\t', fp); - dump_lflags (fp, i); - putc (',', fp); - wcomment (fp, i); - putc ('\n', fp); - } - - fprintf (fp, "};\n"); -} - -int -main(argc, argv) - int argc; - char **argv; -{ - int opt, i; - char *filename; - FILE *fp; - - if ((progname = strrchr (argv[0], '/')) == 0) - progname = argv[0]; - else - progname++; - - filename = (char *)NULL; - debug = 0; - - while ((opt = getopt (argc, argv, "do:")) != EOF) - { - switch (opt) - { - case 'd': - debug = 1; - break; - case 'o': - filename = optarg; - break; - default: - usage(); - } - } - - argc -= optind; - argv += optind; - - if (filename) - { - fp = fopen (filename, "w"); - if (fp == 0) - { - fprintf (stderr, _("%s: %s: cannot open: %s\n"), progname, filename, strerror(errno)); - exit (1); - } - } - else - { - filename = "stdout"; - fp = stdout; - } - - - for (i = 0; i < SYNSIZE; i++) - lsyntax[i] = CWORD; - - load_lsyntax (); - - fprintf (fp, "%s\n", preamble); - fprintf (fp, "%s\n", includes); - - dump_lsyntax (fp); - - if (fp != stdout) - fclose (fp); - exit (0); -} - - -#if !defined (HAVE_STRERROR) - -#include -#ifndef _MINIX -# include -#endif - -#if defined (HAVE_UNISTD_H) -# include -#endif - -/* Return a string corresponding to the error number E. From - the ANSI C spec. */ -#if defined (strerror) -# undef strerror -#endif - -char * -strerror (e) - int e; -{ - static char emsg[40]; -#if defined (HAVE_SYS_ERRLIST) - extern int sys_nerr; - extern char *sys_errlist[]; - - if (e > 0 && e < sys_nerr) - return (sys_errlist[e]); - else -#endif /* HAVE_SYS_ERRLIST */ - { - sprintf (emsg, _("Unknown system error %d"), e); - return (&emsg[0]); - } -} -#endif /* HAVE_STRERROR */ diff --git a/parse.y.debug b/parse.y.debug deleted file mode 100644 index b4581786a..000000000 --- a/parse.y.debug +++ /dev/null @@ -1,4961 +0,0 @@ -/* Yacc grammar for bash. */ - -/* Copyright (C) 1989-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 LICENSE. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ - -%{ -#include "config.h" - -#include "bashtypes.h" -#include "bashansi.h" - -#include "filecntl.h" - -#if defined (HAVE_UNISTD_H) -# include -#endif - -#if defined (HAVE_LOCALE_H) -# include -#endif - -#include -#include "chartypes.h" -#include - -#include "memalloc.h" - -#include "bashintl.h" - -#define NEED_STRFTIME_DECL /* used in externs.h */ - -#include "shell.h" -#include "trap.h" -#include "flags.h" -#include "parser.h" -#include "mailcheck.h" -#include "test.h" -#include "builtins.h" -#include "builtins/common.h" -#include "builtins/builtext.h" - -#include "shmbutil.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" -#else -typedef void *alias_t; -#endif /* ALIAS */ - -#if defined (PROMPT_STRING_DECODE) -# ifndef _MINIX -# include -# endif -# include -# if defined (TM_IN_SYS_TIME) -# include -# include -# endif /* TM_IN_SYS_TIME */ -# include "maxpath.h" -#endif /* PROMPT_STRING_DECODE */ - -#define RE_READ_TOKEN -99 -#define NO_EXPANSION -100 - -#ifdef DEBUG -# define YYDEBUG 1 -#else -# define YYDEBUG 0 -#endif - -#if defined (HANDLE_MULTIBYTE) -# define last_shell_getc_is_singlebyte \ - ((shell_input_line_index > 1) \ - ? shell_input_line_property[shell_input_line_index - 1] \ - : 1) -# define MBTEST(x) ((x) && last_shell_getc_is_singlebyte) -#else -# define last_shell_getc_is_singlebyte 1 -# define MBTEST(x) ((x)) -#endif - -#if defined (EXTENDED_GLOB) -extern int extended_glob; -#endif - -extern int eof_encountered; -extern int no_line_editing, running_under_emacs; -extern int current_command_number; -extern int sourcelevel; -extern int posixly_correct; -extern int last_command_exit_value; -extern char *shell_name, *current_host_name; -extern char *dist_version; -extern int patch_level; -extern int dump_translatable_strings, dump_po_strings; -extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; -#if defined (BUFFERED_INPUT) -extern int bash_input_fd_changed; -#endif - -extern int errno; -/* **************************************************************** */ -/* */ -/* "Forward" declarations */ -/* */ -/* **************************************************************** */ - -#ifdef DEBUG -static void debug_parser __P((int)); -#endif - -static int yy_getc __P((void)); -static int yy_ungetc __P((int)); - -#if defined (READLINE) -static int yy_readline_get __P((void)); -static int yy_readline_unget __P((int)); -#endif - -static int yy_string_get __P((void)); -static int yy_string_unget __P((int)); -static int yy_stream_get __P((void)); -static int yy_stream_unget __P((int)); - -static int shell_getc __P((int)); -static void shell_ungetc __P((int)); -static void discard_until __P((int)); - -#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) -static void push_string __P((char *, int, alias_t *)); -static void pop_string __P((void)); -static void free_string_list __P((void)); -#endif - -static char *read_a_line __P((int)); - -static int reserved_word_acceptable __P((int)); -static int yylex __P((void)); -static int alias_expand_token __P((char *)); -static int time_command_acceptable __P((void)); -static int special_case_tokens __P((char *)); -static int read_token __P((int)); -static char *parse_matched_pair __P((int, int, int, int *, int)); -#if defined (ARRAY_VARS) -static char *parse_compound_assignment __P((int *)); -#endif -#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) -static int parse_dparen __P((int)); -static int parse_arith_cmd __P((char **, int)); -#endif -#if defined (COND_COMMAND) -static void cond_error __P((void)); -static COND_COM *cond_expr __P((void)); -static COND_COM *cond_or __P((void)); -static COND_COM *cond_and __P((void)); -static COND_COM *cond_term __P((void)); -static int cond_skip_newlines __P((void)); -static COMMAND *parse_cond_command __P((void)); -#endif -#if defined (ARRAY_VARS) -static int token_is_assignment __P((char *, int)); -static int token_is_ident __P((char *, int)); -#endif -static int read_token_word __P((int)); -static void discard_parser_constructs __P((int)); - -static char *error_token_from_token __P((int)); -static char *error_token_from_text __P((void)); -static void print_offending_line __P((void)); -static void report_syntax_error __P((char *)); - -static void handle_eof_input_unit __P((void)); -static void prompt_again __P((void)); -#if 0 -static void reset_readline_prompt __P((void)); -#endif -static void print_prompt __P((void)); - -#if defined (HANDLE_MULTIBYTE) -static void set_line_mbstate __P((void)); -static char *shell_input_line_property = NULL; -#else -# define set_line_mbstate() -#endif - -extern int yyerror __P((const char *)); - -#ifdef DEBUG -extern int yydebug; -#endif - -/* Default prompt strings */ -char *primary_prompt = PPROMPT; -char *secondary_prompt = SPROMPT; - -/* 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; - -/* Non-zero means we expand aliases in commands. */ -int expand_aliases = 0; - -/* 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; - -/* If non-zero, $'...' and $"..." are expanded when they appear within - a ${...} expansion, even when the expansion appears within double - quotes. */ -int extended_quote = 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; -static int shell_input_line_size; /* Amount allocated for shell_input_line. */ -static int shell_input_line_len; /* strlen (shell_input_line) */ - -/* Either zero or EOF. */ -static int shell_input_line_terminator; - -/* The line number in a script on which a function definition starts. */ -static int function_dstart; - -/* The line number in a script on which a function body starts. */ -static int function_bstart; - -/* The line number in a script at which an arithmetic for command starts. */ -static int arith_for_lineno; - -/* The line number in a script where the word in a `case WORD', `select WORD' - or `for WORD' begins. This is a nested command maximum, since the array - index is decremented after a case, select, or for command is parsed. */ -#define MAX_CASE_NEST 128 -static int word_lineno[MAX_CASE_NEST]; -static int word_top = -1; - -/* 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; - -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 for [[...]] commands. Members of the - third group are recognized only under special circumstances. */ -%token IF THEN ELSE ELIF FI CASE ESAC FOR SELECT WHILE UNTIL DO DONE FUNCTION -%token COND_START COND_END COND_ERROR -%token IN BANG TIME TIMEOPT - -/* More general tokens. yylex () knows how to make these. */ -%token WORD ASSIGNMENT_WORD -%token NUMBER -%token ARITH_CMD ARITH_FOR_EXPRS -%token COND_CMD -%token AND_AND OR_OR GREATER_GREATER LESS_LESS LESS_AND LESS_LESS_LESS -%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 arith_command -%type cond_command -%type arith_for_command -%type function_def function_body 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 -%type timespec -%type list_terminator - -%start inputunit - -%left '&' ';' '\n' yacc_EOF -%left AND_AND OR_OR -%right '|' -%% - -inputunit: simple_list simple_list_terminator - { - /* 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_LESS_LESS WORD - { - redir.filename = $2; - $$ = make_redirection (0, r_reading_string, redir); - } - | NUMBER LESS_LESS_LESS WORD - { - redir.filename = $3; - $$ = make_redirection ($1, r_reading_string, redir); - } - | 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 = 0; - $$ = make_redirection (1, r_close_this, redir); - } - | NUMBER GREATER_AND '-' - { - redir.dest = 0; - $$ = make_redirection ($1, r_close_this, redir); - } - | LESS_AND '-' - { - redir.dest = 0; - $$ = make_redirection (0, r_close_this, redir); - } - | NUMBER LESS_AND '-' - { - redir.dest = 0; - $$ = 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; - if (tc->redirects) - { - register REDIRECT *t; - for (t = tc->redirects; t->next; t = t->next) - ; - t->next = $2; - } - else - tc->redirects = $2; - $$ = $1; - } - | function_def - { $$ = $1; } - ; - -shell_command: for_command - { $$ = $1; } - | case_command - { $$ = $1; } - | WHILE compound_list DO compound_list DONE - { $$ = make_while_command ($2, $4); } - | UNTIL compound_list DO compound_list DONE - { $$ = make_until_command ($2, $4); } - | select_command - { $$ = $1; } - | if_command - { $$ = $1; } - | subshell - { $$ = $1; } - | group_command - { $$ = $1; } - | arith_command - { $$ = $1; } - | cond_command - { $$ = $1; } - | arith_for_command - { $$ = $1; } - ; - -for_command: FOR WORD newline_list DO compound_list DONE - { - $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - | FOR WORD newline_list '{' compound_list '}' - { - $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - | FOR WORD ';' newline_list DO compound_list DONE - { - $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - | FOR WORD ';' newline_list '{' compound_list '}' - { - $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - | FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE - { - $$ = make_for_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - | FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' - { - $$ = make_for_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - | FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE - { - $$ = make_for_command ($2, (WORD_LIST *)NULL, $8, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - | FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}' - { - $$ = make_for_command ($2, (WORD_LIST *)NULL, $8, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - ; - -arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE - { - $$ = make_arith_for_command ($2, $6, arith_for_lineno); - if (word_top > 0) word_top--; - } - | FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' - { - $$ = make_arith_for_command ($2, $6, arith_for_lineno); - if (word_top > 0) word_top--; - } - | FOR ARITH_FOR_EXPRS DO compound_list DONE - { - $$ = make_arith_for_command ($2, $4, arith_for_lineno); - if (word_top > 0) word_top--; - } - | FOR ARITH_FOR_EXPRS '{' compound_list '}' - { - $$ = make_arith_for_command ($2, $4, arith_for_lineno); - if (word_top > 0) word_top--; - } - ; - -select_command: SELECT WORD newline_list DO list DONE - { - $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - | SELECT WORD newline_list '{' list '}' - { - $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - | SELECT WORD ';' newline_list DO list DONE - { - $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - | SELECT WORD ';' newline_list '{' list '}' - { - $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - | SELECT WORD newline_list IN word_list list_terminator newline_list DO list DONE - { - $$ = make_select_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - | SELECT WORD newline_list IN word_list list_terminator newline_list '{' list '}' - { - $$ = make_select_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - ; - -case_command: CASE WORD newline_list IN newline_list ESAC - { - $$ = make_case_command ($2, (PATTERN_LIST *)NULL, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - | CASE WORD newline_list IN case_clause_sequence newline_list ESAC - { - $$ = make_case_command ($2, $5, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - | CASE WORD newline_list IN case_clause ESAC - { - $$ = make_case_command ($2, $5, word_lineno[word_top]); - if (word_top > 0) word_top--; - } - ; - -function_def: WORD '(' ')' newline_list function_body - { $$ = make_function_def ($1, $5, function_dstart, function_bstart); } - - | FUNCTION WORD '(' ')' newline_list function_body - { $$ = make_function_def ($2, $6, function_dstart, function_bstart); } - - | FUNCTION WORD newline_list function_body - { $$ = make_function_def ($2, $4, function_dstart, function_bstart); } - ; - - -function_body: 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. */ - /* XXX - I don't think it matters, but we might - want to change this in the future to avoid - problems differentiating between a function - definition with a redirection and a function - definition containing a single command with a - redirection. The two are semantically equivalent, - though -- the only difference is in how the - command printing code displays the redirections. */ - if (tc->redirects) - { - register REDIRECT *t; - for (t = tc->redirects; t->next; t = t->next) - ; - t->next = $2; - } - else - tc->redirects = $2; - $$ = $1; - } - ; - -subshell: '(' compound_list ')' - { - $$ = make_subshell_command ($2); - $$->flags |= CMD_WANT_SUBSHELL; - } - ; - -if_command: IF compound_list THEN compound_list FI - { $$ = make_if_command ($2, $4, (COMMAND *)NULL); } - | IF compound_list THEN compound_list ELSE compound_list FI - { $$ = make_if_command ($2, $4, $6); } - | IF compound_list THEN compound_list elif_clause FI - { $$ = make_if_command ($2, $4, $5); } - ; - - -group_command: '{' compound_list '}' - { $$ = make_group_command ($2); } - ; - -arith_command: ARITH_CMD - { $$ = make_arith_command ($1); } - ; - -cond_command: COND_START COND_CMD COND_END - { $$ = $2; } - ; - -elif_clause: ELIF compound_list THEN compound_list - { $$ = make_if_command ($2, $4, (COMMAND *)NULL); } - | ELIF compound_list THEN compound_list ELSE compound_list - { $$ = make_if_command ($2, $4, $6); } - | ELIF compound_list THEN compound_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; } - ; - -simple_list_terminator: '\n' -{ -if (bash_input.type == st_string) - itrace("resolved simple_list_terminator as NEWLINE"); -} - | yacc_EOF -{ -if (bash_input.type == st_string) - itrace("resolved simple_list_terminator as yacc_EOF"); -} - ; - -list_terminator:'\n' - { $$ = '\n'; } - | ';' - { $$ = ';'; } - | yacc_EOF - { $$ = 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 (); -if (bash_input.type == st_string) - itrace("resolved simple_list as simple_list1: input string = %s", bash_input.location.string); - } - | 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 (); -if (bash_input.type == st_string) - itrace("resolved simple_list as simple_list1 &"); - } - | simple_list1 ';' - { - $$ = $1; - if (need_here_doc) - gather_here_documents (); -if (bash_input.type == st_string) - itrace("resolved simple_list as simple_list1 ;"); - } - ; - -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 - { - if ($2) - $2->flags |= CMD_INVERT_RETURN; - $$ = $2; - } - | timespec pipeline - { - if ($2) - $2->flags |= $1; - $$ = $2; - } - | timespec BANG pipeline - { - if ($3) - $3->flags |= $1|CMD_INVERT_RETURN; - $$ = $3; - } - | BANG timespec pipeline - { - if ($3) - $3->flags |= $2|CMD_INVERT_RETURN; - $$ = $3; - } - | timespec list_terminator - { - ELEMENT x; - - /* Boy, this is unclean. `time' by itself can - time a null command. We cheat and push a - newline back if the list_terminator was a newline - to avoid the double-newline problem (one to - terminate this, one to terminate the command) */ - x.word = 0; - x.redirect = 0; - $$ = make_simple_command (x, (COMMAND *)NULL); - $$->flags |= $1; - /* XXX - let's cheat and push a newline back */ - if ($2 == '\n') - token_to_read = '\n'; - } - - ; - -pipeline: - pipeline '|' newline_list pipeline - { $$ = command_connect ($1, $4, '|'); } - | command - { $$ = $1; } - ; - -timespec: TIME - { $$ = CMD_TIME_PIPELINE; } - | TIME TIMEOPT - { $$ = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } - ; -%% - -/* Possible states for the parser that require it to do special things. */ -#define PST_CASEPAT 0x0001 /* in a case pattern list */ -#define PST_ALEXPNEXT 0x0002 /* expand next word for aliases */ -#define PST_ALLOWOPNBRC 0x0004 /* allow open brace for function def */ -#define PST_NEEDCLOSBRC 0x0008 /* need close brace */ -#define PST_DBLPAREN 0x0010 /* double-paren parsing */ -#define PST_SUBSHELL 0x0020 /* ( ... ) subshell */ -#define PST_CMDSUBST 0x0040 /* $( ... ) command substitution */ -#define PST_CASESTMT 0x0080 /* parsing a case statement */ -#define PST_CONDCMD 0x0100 /* parsing a [[...]] command */ -#define PST_CONDEXPR 0x0200 /* parsing the guts of [[...]] */ -#define PST_ARITHFOR 0x0400 /* parsing an arithmetic for command */ -#define PST_ALEXPAND 0x0800 /* OK to expand aliases - unused */ -#define PST_CMDTOKEN 0x1000 /* command token OK - unused */ -#define PST_COMPASSIGN 0x2000 /* parsing x=(...) compound assignment */ -#define PST_ASSIGNOK 0x4000 /* assignment statement ok in this context */ - -/* Initial size to allocate for tokens, and the - amount to grow them by. */ -#define TOKEN_DEFAULT_INITIAL_SIZE 496 -#define TOKEN_DEFAULT_GROW_SIZE 512 - -/* Should we call prompt_again? */ -#define SHOULD_PROMPT() \ - (interactive && (bash_input.type == st_stdin || bash_input.type == st_stream)) - -#if defined (ALIAS) -# define expanding_alias() (pushed_string_list && pushed_string_list->expander) -#else -# define expanding_alias() 0 -#endif - -/* The token currently being read. */ -static int current_token; - -/* The last read token, or NULL. read_token () uses this for context - checking. */ -static int last_read_token; - -/* The token read prior to last_read_token. */ -static int token_before_that; - -/* The token read prior to token_before_that. */ -static int two_tokens_ago; - -/* The current parser state. */ -static int parser_state; - -/* Global var is non-zero when end of file has been reached. */ -int EOF_Reached = 0; - -#ifdef DEBUG -static void -debug_parser (i) - int i; -{ -#if YYDEBUG != 0 - yydebug = i; -#endif -} -#endif - -/* 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. Free bash_input.name if it - is non-null, avoiding a memory leak. */ -void -initialize_bash_input () -{ - bash_input.type = st_none; - FREE (bash_input.name); - bash_input.name = (char *)NULL; - bash_input.location.file = (FILE *)NULL; - bash_input.location.string = (char *)NULL; - bash_input.getter = (sh_cget_func_t *)NULL; - bash_input.ungetter = (sh_cunget_func_t *)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) - sh_cget_func_t *get; - sh_cunget_func_t *unget; - enum stream_type type; - const char *name; - INPUT_STREAM location; -{ - bash_input.type = type; - FREE (bash_input.name); - bash_input.name = name ? savestring (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; -} - -char * -yy_input_name () -{ - return (bash_input.name ? bash_input.name : "stdin"); -} - -/* Call this to get the next character of input. */ -static int -yy_getc () -{ - return (*(bash_input.getter)) (); -} - -/* Call this to unget C. That is, to make C the next character - to be read. */ -static int -yy_ungetc (c) - int c; -{ - return (*(bash_input.ungetter)) (c); -} - -#if defined (BUFFERED_INPUT) -#ifdef INCLUDE_UNUSED -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 -#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; - unsigned char c; - - if (!current_readline_line) - { - if (!bash_readline_initialized) - initialize_readline (); - -#if defined (JOB_CONTROL) - if (job_control) - give_terminal_to (shell_pgrp, 0); -#endif /* JOB_CONTROL */ - - old_sigint = (SigHandler *)NULL; - if (signal_is_ignored (SIGINT) == 0) - { - old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler); - interrupt_immediately++; - } - terminate_immediately = 1; - - current_readline_line = readline (current_readline_prompt ? - current_readline_prompt : ""); - - terminate_immediately = 0; - if (signal_is_ignored (SIGINT) == 0 && old_sigint) - { - interrupt_immediately--; - set_signal_handler (SIGINT, old_sigint); - } - -#if 0 - /* Reset the prompt to the decoded value of prompt_string_pointer. */ - reset_readline_prompt (); -#endif - - if (current_readline_line == 0) - return (EOF); - - current_readline_line_index = 0; - line_len = strlen (current_readline_line); - - current_readline_line = (char *)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] == 0) - { - 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 unsigned char c; - - string = bash_input.location.string; - - /* If the string doesn't exist, or is empty, EOF found. */ - if (string && *string) - { - c = *string++; - bash_input.location.string = string; - return (c); - } - else - return (EOF); -} - -static int -yy_string_unget (c) - int c; -{ - *(--bash_input.location.string) = c; - return (c); -} - -void -with_input_from_string (string, name) - char *string; - const char *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. */ -/* */ -/* **************************************************************** */ - -/* These two functions used to test the value of the HAVE_RESTARTABLE_SYSCALLS - define, and just use getc/ungetc if it was defined, but since bash - installs its signal handlers without the SA_RESTART flag, some signals - (like SIGCHLD, SIGWINCH, etc.) received during a read(2) will not cause - the read to be restarted. We need to restart it ourselves. */ - -static int -yy_stream_get () -{ - int result; - - result = EOF; - if (bash_input.location.file) - { - if (interactive) - { - interrupt_immediately++; - terminate_immediately++; - } - result = getc_with_restart (bash_input.location.file); - if (interactive) - { - interrupt_immediately--; - terminate_immediately--; - } - } - return (result); -} - -static int -yy_stream_unget (c) - int c; -{ - return (ungetc_with_restart (c, bash_input.location.file)); -} - -void -with_input_from_stream (stream, name) - FILE *stream; - const 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; - -#if defined (COND_COMMAND) -static int cond_lineno; -static int cond_token; -#endif - -STREAM_SAVER *stream_list = (STREAM_SAVER *)NULL; - -void -push_stream (reset_lineno) - int reset_lineno; -{ - 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 = set_buffered_stream (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 = 0; - if (reset_lineno) - 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; - SET_CLOSE_ON_EXEC (default_buffered_input); - } - } - /* XXX could free buffered stream returned as result here. */ - set_buffered_stream (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; -} - -/* Save the current token state and return it in a malloced array. */ -int * -save_token_state () -{ - int *ret; - - ret = (int *)xmalloc (3 * sizeof (int)); - ret[0] = last_read_token; - ret[1] = token_before_that; - ret[2] = two_tokens_ago; - return ret; -} - -void -restore_token_state (ts) - int *ts; -{ - if (ts == 0) - return; - last_read_token = ts[0]; - token_before_that = ts[1]; - two_tokens_ago = ts[2]; -} - -/* - * 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' - */ - -#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) - -#define END_OF_ALIAS 0 - -/* - * Pseudo-global variables used in implementing token-wise alias expansion. - */ - -/* - * 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; -#if defined (ALIAS) - alias_t *expander; /* alias that caused this line to be pushed. */ -#endif - int saved_line_size, saved_line_index, saved_line_terminator; -} STRING_SAVER; - -STRING_SAVER *pushed_string_list = (STRING_SAVER *)NULL; - -/* - * 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; -#if defined (ALIAS) - temp->expander = ap; -#endif - temp->next = pushed_string_list; - pushed_string_list = temp; - -#if defined (ALIAS) - if (ap) - ap->flags |= AL_BEINGEXPANDED; -#endif - - shell_input_line = s; - shell_input_line_size = strlen (s); - shell_input_line_index = 0; - shell_input_line_terminator = '\0'; -#if 0 - parser_state &= ~PST_ALEXPNEXT; /* XXX */ -#endif - - set_line_mbstate (); -} - -/* - * 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; - - if (pushed_string_list->expand_alias) - parser_state |= PST_ALEXPNEXT; - else - parser_state &= ~PST_ALEXPNEXT; - - t = pushed_string_list; - pushed_string_list = pushed_string_list->next; - -#if defined (ALIAS) - if (t->expander) - t->expander->flags &= ~AL_BEINGEXPANDED; -#endif - - free ((char *)t); - - set_line_mbstate (); -} - -static void -free_string_list () -{ - register STRING_SAVER *t, *t1; - - for (t = pushed_string_list; t; ) - { - t1 = t->next; - FREE (t->saved_line); -#if defined (ALIAS) - if (t->expander) - t->expander->flags &= ~AL_BEINGEXPANDED; -#endif - free ((char *)t); - t = t1; - } - pushed_string_list = (STRING_SAVER *)NULL; -} - -#endif /* ALIAS || DPAREN_ARITHMETIC */ - -void -free_pushed_string_input () -{ -#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) - free_string_list (); -#endif -} - -/* 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; - -#if defined (READLINE) - if (no_line_editing && SHOULD_PROMPT ()) -#else - if (SHOULD_PROMPT ()) -#endif - print_prompt (); - - pass_next = 0; - while (1) - { - /* Allow immediate exit if interrupted during input. */ - QUIT; - - c = yy_getc (); - - /* Ignore null bytes in input. */ - if (c == 0) - { -#if 0 - internal_warning ("read_a_line: ignored null byte in input"); -#endif - continue; - } - - /* If there is no more input, then we return NULL. */ - if (c == EOF) - { - if (interactive && bash_input.type == st_stream) - clearerr (stdin); - if (indx == 0) - return ((char *)NULL); - c = '\n'; - } - - /* `+2' in case the final character in the buffer is a newline. */ - RESIZE_MALLOCED_BUFFER (line_buffer, indx, 2, 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') - { - line_number++; - 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; - if (SHOULD_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 }, -#if defined (COND_COMMAND) - { "[[", COND_START }, - { "]]", COND_END }, -#endif - { (char *)NULL, 0} -}; - -/* other tokens that can be returned by read_token() */ -STRING_INT_ALIST other_token_alist[] = { - /* Multiple-character tokens with special values */ - { "-p", TIMEOPT }, - { "&&", AND_AND }, - { "||", OR_OR }, - { ">>", GREATER_GREATER }, - { "<<", LESS_LESS }, - { "<&", LESS_AND }, - { ">&", GREATER_AND }, - { ";;", SEMI_SEMI }, - { "<<-", LESS_LESS_MINUS }, - { "<<<", LESS_LESS_LESS }, - { "&>", AND_GREATER }, - { "<>", LESS_GREATER }, - { ">|", GREATER_BAR }, - { "EOF", yacc_EOF }, - /* Tokens whose value is the character itself */ - { ">", '>' }, - { "<", '<' }, - { "-", '-' }, - { "{", '{' }, - { "}", '}' }, - { ";", ';' }, - { "(", '(' }, - { ")", ')' }, - { "|", '|' }, - { "&", '&' }, - { "newline", '\n' }, - { (char *)NULL, 0} -}; - -/* others not listed here: - WORD look at yylval.word - ASSIGNMENT_WORD look at yylval.word - NUMBER look at yylval.number - ARITH_CMD look at yylval.word_list - ARITH_FOR_EXPRS look at yylval.word_list - COND_CMD look at yylval.command -*/ - -/* These are used by read_token_word, but appear up here so that shell_getc - can use them to decide when to add otherwise blank lines to the history. */ - -/* The primary delimiter stack. */ -struct dstack dstack = { (char *)NULL, 0, 0 }; - -/* A temporary delimiter stack to be used when decoding prompt strings. - This is needed because command substitutions in prompt strings (e.g., PS2) - can screw up the parser's quoting state. */ -static struct dstack temp_dstack = { (char *)NULL, 0, 0 }; - -/* Macro for accessing the top delimiter on the stack. Returns the - delimiter or zero if none. */ -#define current_delimiter(ds) \ - (ds.delimiter_depth ? ds.delimiters[ds.delimiter_depth - 1] : 0) - -#define push_delimiter(ds, character) \ - do \ - { \ - if (ds.delimiter_depth + 2 > ds.delimiter_space) \ - ds.delimiters = (char *)xrealloc \ - (ds.delimiters, (ds.delimiter_space += 10) * sizeof (char)); \ - ds.delimiters[ds.delimiter_depth] = character; \ - ds.delimiter_depth++; \ - } \ - while (0) - -#define pop_delimiter(ds) ds.delimiter_depth-- - -/* 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. */ - -/* This implements one-character lookahead/lookbehind across physical input - lines, to avoid something being lost because it's pushed back with - shell_ungetc when we're at the start of a line. */ -static int eol_ungetc_lookahead = 0; - -static int -shell_getc (remove_quoted_newline) - int remove_quoted_newline; -{ - register int i; - int c; - unsigned char uc; - - QUIT; - - if (sigwinch_received) - { - sigwinch_received = 0; - get_new_window_size (0, (int *)0, (int *)0); - } - - if (eol_ungetc_lookahead) - { - c = eol_ungetc_lookahead; - eol_ungetc_lookahead = 0; - return (c); - } - -#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) - /* 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 && !DPAREN_ARITHMETIC */ - if (!shell_input_line || !shell_input_line[shell_input_line_index]) -#endif /* !ALIAS && !DPAREN_ARITHMETIC */ - { - line_number++; - - restart_read: - - /* Allow immediate exit if interrupted during input. */ - QUIT; - - i = 0; - shell_input_line_terminator = 0; - - /* If the shell is interatctive, but not currently printing a prompt - (interactive_shell && interactive == 0), we don't want to print - notifies or cleanup the jobs -- we want to defer it until we do - print the next prompt. */ - if (interactive_shell == 0 || SHOULD_PROMPT()) - { -#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 (no_line_editing && SHOULD_PROMPT()) -#else - if (SHOULD_PROMPT()) -#endif - print_prompt (); - - if (bash_input.type == st_stream) - clearerr (stdin); - - while (1) - { - c = yy_getc (); - - /* Allow immediate exit if interrupted during input. */ - QUIT; - - if (c == '\0') - { -#if 0 - internal_warning ("shell_getc: ignored null byte in input"); -#endif - continue; - } - - RESIZE_MALLOCED_BUFFER (shell_input_line, i, 2, shell_input_line_size, 256); - - 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) */ - - set_line_mbstate (); - -#if defined (HISTORY) - if (remember_on_history && shell_input_line && shell_input_line[0]) - { - char *expansions; -# if defined (BANG_HISTORY) - int old_hist; - - /* If the current delimiter is a single quote, we should not be - performing history expansion, even if we're on a different - line from the original single quote. */ - old_hist = history_expansion_inhibited; - if (current_delimiter (dstack) == '\'') - history_expansion_inhibited = 1; -# endif - expansions = pre_process_line (shell_input_line, 1, 1); -# if defined (BANG_HISTORY) - history_expansion_inhibited = old_hist; -# endif - if (expansions != shell_input_line) - { - 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; - - set_line_mbstate (); - } - } - /* Try to do something intelligent with blank lines encountered while - entering multi-line commands. XXX - this is grotesque */ - else if (remember_on_history && shell_input_line && - shell_input_line[0] == '\0' && - current_command_line_count > 1) - { - if (current_delimiter (dstack)) - /* We know shell_input_line[0] == 0 and we're reading some sort of - quoted string. This means we've got a line consisting of only - a newline in a quoted string. We want to make sure this line - gets added to the history. */ - maybe_add_history (shell_input_line); - else - { - char *hdcs; - hdcs = history_delimiting_chars (); - if (hdcs && hdcs[0] == ';') - maybe_add_history (shell_input_line); - } - } - -#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; - if (SHOULD_PROMPT ()) - 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 = (char *)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'; - - set_line_mbstate (); - } - } - - uc = shell_input_line[shell_input_line_index]; - - if (uc) - shell_input_line_index++; - -#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) - /* If UC 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 (!uc && (pushed_string_list != (STRING_SAVER *)NULL)) - { - pop_string (); - uc = shell_input_line[shell_input_line_index]; - if (uc) - shell_input_line_index++; - } -#endif /* ALIAS || DPAREN_ARITHMETIC */ - - if MBTEST(uc == '\\' && remove_quoted_newline && shell_input_line[shell_input_line_index] == '\n') - { - if (SHOULD_PROMPT ()) - prompt_again (); - line_number++; - goto restart_read; - } - - if (!uc && shell_input_line_terminator == EOF) - return ((shell_input_line_index != 0) ? '\n' : EOF); - - return (uc); -} - -/* Put C back into the input for the shell. This might need changes for - HANDLE_MULTIBYTE around EOLs. Since we (currently) never push back a - character different than we read, shell_input_line_property doesn't need - to change when manipulating shell_input_line. The define for - last_shell_getc_is_singlebyte should take care of it, though. */ -static void -shell_ungetc (c) - int c; -{ - if (shell_input_line && shell_input_line_index) - shell_input_line[--shell_input_line_index] = c; - else - eol_ungetc_lookahead = c; -} - -#ifdef INCLUDE_UNUSED -/* Back the input pointer up by one, effectively `ungetting' a character. */ -static void -shell_ungetchar () -{ - if (shell_input_line && shell_input_line_index) - shell_input_line_index--; -} -#endif - -/* 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_variable_command (command, vname) - char *command, *vname; -{ - char *last_lastarg; - sh_parser_state_t ps; - - save_parser_state (&ps); - last_lastarg = get_string_value ("_"); - if (last_lastarg) - last_lastarg = savestring (last_lastarg); - - parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST); - - restore_parser_state (&ps); - bind_variable ("_", last_lastarg, 0); - 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; - -/* 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 && SHOULD_PROMPT ()) - 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 esacs_needed_count; - -void -gather_here_documents () -{ - int r = 0; - while (need_here_doc) - { - make_here_document (redir_stack[r++]); - need_here_doc--; - } -} - -/* When non-zero, an open-brace used to create a group is awaiting a close - brace partner. */ -static int open_brace_count; - -#define command_token_position(token) \ - (((token) == ASSIGNMENT_WORD) || \ - ((token) != SEMI_SEMI && reserved_word_acceptable(token))) - -#define assignment_acceptable(token) \ - (command_token_position(token) && ((parser_state & PST_CASEPAT) == 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 ((parser_state & PST_CASEPAT) && (word_token_alist[i].token != ESAC)) \ - break; \ - if (word_token_alist[i].token == TIME && time_command_acceptable () == 0) \ - break; \ - if (word_token_alist[i].token == ESAC) \ - parser_state &= ~(PST_CASEPAT|PST_CASESTMT); \ - else if (word_token_alist[i].token == CASE) \ - parser_state |= PST_CASESTMT; \ - else if (word_token_alist[i].token == COND_END) \ - parser_state &= ~(PST_CONDCMD|PST_CONDEXPR); \ - else if (word_token_alist[i].token == COND_START) \ - parser_state |= PST_CONDCMD; \ - else if (word_token_alist[i].token == '{') \ - open_brace_count++; \ - else if (word_token_alist[i].token == '}' && open_brace_count) \ - open_brace_count--; \ - 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 EXPAND_ALIASES is set, 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 (parser_state & PST_CASEPAT). */ - -static char * -mk_alexpansion (s) - char *s; -{ - int l; - char *r; - - l = strlen (s); - r = xmalloc (l + 2); - strcpy (r, s); - if (r[l -1] != ' ') - r[l++] = ' '; - r[l] = '\0'; - return r; -} - -static int -alias_expand_token (tokstr) - char *tokstr; -{ - char *expanded; - alias_t *ap; - - if (((parser_state & PST_ALEXPNEXT) || command_token_position (last_read_token)) && - (parser_state & PST_CASEPAT) == 0) - { - ap = find_alias (tokstr); - - /* Currently expanding this token. */ - if (ap && (ap->flags & AL_BEINGEXPANDED)) - return (NO_EXPANSION); - - /* mk_alexpansion puts an extra space on the end of the alias expansion, - so the lookahead by the parser works right. If this gets changed, - make sure the code in shell_getc that deals with reaching the end of - an expanded alias is changed with it. */ - expanded = ap ? mk_alexpansion (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 */ - -static int -time_command_acceptable () -{ -#if defined (COMMAND_TIMING) - switch (last_read_token) - { - case 0: - case ';': - case '\n': - case AND_AND: - case OR_OR: - case '&': - case DO: - case THEN: - case ELSE: - case '{': /* } */ - case '(': /* ) */ - return 1; - default: - return 0; - } -#else - return 0; -#endif /* COMMAND_TIMING */ -} - -/* 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 `esacs_needed_count' - to be set - - `{' is recognized if the last token as WORD and the token - before that was FUNCTION, or if we just parsed an arithmetic - `for' command. - - `}' is recognized if there is an unclosed `{' present. - - `-p' is returned as TIMEOPT if the last read token was TIME. - - ']]' is returned as COND_END if the parser is currently parsing - a conditional expression ((parser_state & PST_CONDEXPR) != 0) - - `time' is returned as TIME if and only if it is immediately - preceded by one of `;', `\n', `||', `&&', or `&'. -*/ - -static int -special_case_tokens (tokstr) - char *tokstr; -{ - 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 - (tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0)) - { - if (token_before_that == CASE) - { - parser_state |= PST_CASEPAT; - esacs_needed_count++; - } - 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 - (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0')) - 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 (esacs_needed_count) - { - esacs_needed_count--; - if (STREQ (tokstr, "esac")) - { - parser_state &= ~PST_CASEPAT; - return (ESAC); - } - } - - /* The start of a shell function definition. */ - if (parser_state & PST_ALLOWOPNBRC) - { - parser_state &= ~PST_ALLOWOPNBRC; - if (tokstr[0] == '{' && tokstr[1] == '\0') /* } */ - { - open_brace_count++; - function_bstart = line_number; - return ('{'); /* } */ - } - } - - /* We allow a `do' after a for ((...)) without an intervening - list_terminator */ - if (last_read_token == ARITH_FOR_EXPRS && tokstr[0] == 'd' && tokstr[1] == 'o' && !tokstr[2]) - return (DO); - if (last_read_token == ARITH_FOR_EXPRS && tokstr[0] == '{' && tokstr[1] == '\0') /* } */ - { - open_brace_count++; - return ('{'); /* } */ - } - - if (open_brace_count && reserved_word_acceptable (last_read_token) && tokstr[0] == '}' && !tokstr[1]) - { - open_brace_count--; /* { */ - return ('}'); - } - -#if defined (COMMAND_TIMING) - /* Handle -p after `time'. */ - if (last_read_token == TIME && tokstr[0] == '-' && tokstr[1] == 'p' && !tokstr[2]) - return (TIMEOPT); -#endif - -#if 0 -#if defined (COMMAND_TIMING) - if (STREQ (token, "time") && ((parser_state & PST_CASEPAT) == 0) && time_command_acceptable ()) - return (TIME); -#endif /* COMMAND_TIMING */ -#endif - -#if defined (COND_COMMAND) /* [[ */ - if ((parser_state & PST_CONDEXPR) && tokstr[0] == ']' && tokstr[1] == ']' && tokstr[2] == '\0') - return (COND_END); -#endif - - 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 () -{ - dstack.delimiter_depth = 0; /* No delimiters found so far. */ - open_brace_count = 0; - - parser_state = 0; - -#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) - if (pushed_string_list) - free_string_list (); -#endif /* ALIAS || DPAREN_ARITHMETIC */ - - if (shell_input_line) - { - free (shell_input_line); - shell_input_line = (char *)NULL; - shell_input_line_size = shell_input_line_index = 0; - } - - FREE (word_desc_to_read); - word_desc_to_read = (WORD_DESC *)NULL; - - 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; - word_desc_to_read = (WORD_DESC *)NULL; - } - token_to_read = 0; - return (result); - } - -#if defined (COND_COMMAND) - if ((parser_state & (PST_CONDCMD|PST_CONDEXPR)) == PST_CONDCMD) - { - cond_lineno = line_number; - parser_state |= PST_CONDEXPR; - yylval.command = parse_cond_command (); - if (cond_token != COND_END) - { - cond_error (); - return (-1); - } - token_to_read = COND_END; - parser_state &= ~(PST_CONDEXPR|PST_CONDCMD); - return (COND_CMD); - } -#endif - -#if defined (ALIAS) - /* 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 && shellblank (character)) - ; - - if (character == EOF) - { - EOF_Reached = 1; - return (yacc_EOF); - } - - if MBTEST(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) - parser_state &= ~PST_ALEXPNEXT; -#endif /* ALIAS */ - - parser_state &= ~PST_ASSIGNOK; - - return (character); - } - - /* Shell meta-characters. */ - if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0)) - { -#if defined (ALIAS) - /* Turn off alias tokenization iff this character sequence would - not leave us ready to read a command. */ - if (character == '<' || character == '>') - parser_state &= ~PST_ALEXPNEXT; -#endif /* ALIAS */ - - parser_state &= ~PST_ASSIGNOK; - - 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 if (peek_char == '<') - return (LESS_LESS_LESS); - else - { - shell_ungetc (peek_char); - return (LESS_LESS); - } - - case '>': - return (GREATER_GREATER); - - case ';': - parser_state |= PST_CASEPAT; -#if defined (ALIAS) - parser_state &= ~PST_ALEXPNEXT; -#endif /* ALIAS */ - - return (SEMI_SEMI); - - case '&': - return (AND_AND); - - case '|': - return (OR_OR); - -#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) - case '(': /* ) */ - result = parse_dparen (character); - if (result == -2) - break; - else - return result; -#endif - } - } - else if MBTEST(character == '<' && peek_char == '&') - return (LESS_AND); - else if MBTEST(character == '>' && peek_char == '&') - return (GREATER_AND); - else if MBTEST(character == '<' && peek_char == '>') - return (LESS_GREATER); - else if MBTEST(character == '>' && peek_char == '|') - return (GREATER_BAR); - else if MBTEST(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 MBTEST(character == ')' && last_read_token == '(' && token_before_that == WORD) - { - parser_state |= PST_ALLOWOPNBRC; -#if defined (ALIAS) - parser_state &= ~PST_ALEXPNEXT; -#endif /* ALIAS */ - function_dstart = line_number; - } - - /* case pattern lists may be preceded by an optional left paren. If - we're not trying to parse a case pattern list, the left paren - indicates a subshell. */ - if MBTEST(character == '(' && (parser_state & PST_CASEPAT) == 0) /* ) */ - parser_state |= PST_SUBSHELL; - /*(*/ - else if MBTEST((parser_state & PST_CASEPAT) && character == ')') - parser_state &= ~PST_CASEPAT; - /*(*/ - else if MBTEST((parser_state & PST_SUBSHELL) && character == ')') - parser_state &= ~PST_SUBSHELL; - -#if defined (PROCESS_SUBSTITUTION) - /* Check for the constructs which introduce process substitution. - Shells running in `posix mode' don't do process substitution. */ - if MBTEST(posixly_correct || ((character != '>' && character != '<') || peek_char != '(')) /*)*/ -#endif /* PROCESS_SUBSTITUTION */ - return (character); - } - - /* Hack <&- (close stdin) case. Also <&N- (dup and close). */ - if MBTEST(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; -} - -/* - * Match a $(...) or other grouping construct. This has to handle embedded - * quoted strings ('', ``, "") and nested constructs. It also must handle - * reprompting the user, if necessary, after reading a newline, and returning - * correct error values if it reads EOF. - */ -#define P_FIRSTCLOSE 0x01 -#define P_ALLOWESC 0x02 -#define P_DQUOTE 0x04 -#define P_COMMAND 0x08 /* parsing a command, so look for comments */ -#define P_BACKQUOTE 0x10 /* parsing a backquoted command substitution */ - -static char matched_pair_error; -static char * -parse_matched_pair (qc, open, close, lenp, flags) - int qc; /* `"' if this construct is within double quotes */ - int open, close; - int *lenp, flags; -{ - int count, ch, was_dollar, in_comment, check_comment; - int pass_next_character, backq_backslash, nestlen, ttranslen, start_lineno; - char *ret, *nestret, *ttrans; - int retind, retsize, rflags; - -/* itrace("parse_matched_pair: open = %c close = %c", open, close); */ - count = 1; - pass_next_character = backq_backslash = was_dollar = in_comment = 0; - check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0; - - /* RFLAGS is the set of flags we want to pass to recursive calls. */ - rflags = (qc == '"') ? P_DQUOTE : (flags & P_DQUOTE); - - ret = (char *)xmalloc (retsize = 64); - retind = 0; - - start_lineno = line_number; - while (count) - { - ch = shell_getc (qc != '\'' && pass_next_character == 0 && backq_backslash == 0); - - if (ch == EOF) - { - free (ret); - parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close); - EOF_Reached = 1; /* XXX */ - return (&matched_pair_error); - } - - /* Possible reprompting. */ - if (ch == '\n' && SHOULD_PROMPT ()) - prompt_again (); - - if (in_comment) - { - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - - if (ch == '\n') - in_comment = 0; - - continue; - } - /* Not exactly right yet, should handle shell metacharacters, too. If - any changes are made to this test, make analogous changes to subst.c: - extract_delimited_string(). */ - else if MBTEST(check_comment && in_comment == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || whitespace (ret[retind - 1]))) - in_comment = 1; - - /* last char was backslash inside backquoted command substitution */ - if (backq_backslash) - { - backq_backslash = 0; - /* Placeholder for adding special characters */ - } - - if (pass_next_character) /* last char was backslash */ - { - pass_next_character = 0; - if (qc != '\'' && ch == '\n') /* double-quoted \ disappears. */ - { - if (retind > 0) retind--; /* swallow previously-added backslash */ - continue; - } - - RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); - if MBTEST(ch == CTLESC || ch == CTLNUL) - ret[retind++] = CTLESC; - ret[retind++] = ch; - continue; - } - else if MBTEST(ch == CTLESC || ch == CTLNUL) /* special shell escapes */ - { - RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); - ret[retind++] = CTLESC; - ret[retind++] = ch; - continue; - } - else if MBTEST(ch == close) /* ending delimiter */ - count--; - /* handle nested ${...} specially. */ - else if MBTEST(open != close && was_dollar && open == '{' && ch == open) /* } */ - count++; - else if MBTEST(((flags & P_FIRSTCLOSE) == 0) && ch == open) /* nested begin */ - count++; - - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - - if (open == '\'') /* '' inside grouping construct */ - { - if MBTEST((flags & P_ALLOWESC) && ch == '\\') - pass_next_character++; -#if 0 - else if MBTEST((flags & P_BACKQUOTE) && ch == '\\') - backq_backslash++; -#endif - continue; - } - - if MBTEST(ch == '\\') /* backslashes */ - pass_next_character++; - - if (open != close) /* a grouping construct */ - { - if MBTEST(shellquote (ch)) - { - /* '', ``, or "" inside $(...) or other grouping construct. */ - push_delimiter (dstack, ch); - if MBTEST(was_dollar && ch == '\'') /* $'...' inside group */ - nestret = parse_matched_pair (ch, ch, ch, &nestlen, P_ALLOWESC|rflags); - else - nestret = parse_matched_pair (ch, ch, ch, &nestlen, rflags); - pop_delimiter (dstack); - if (nestret == &matched_pair_error) - { - free (ret); - return &matched_pair_error; - } - if MBTEST(was_dollar && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0)) - { - /* Translate $'...' here. */ - ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); - xfree (nestret); - - if ((rflags & P_DQUOTE) == 0) - { - nestret = sh_single_quote (ttrans); - free (ttrans); - nestlen = strlen (nestret); - } - else - { - nestret = ttrans; - nestlen = ttranslen; - } - retind -= 2; /* back up before the $' */ - } - else if MBTEST(was_dollar && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0)) - { - /* Locale expand $"..." here. */ - ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); - xfree (nestret); - - nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); - free (ttrans); - nestlen = ttranslen + 2; - retind -= 2; /* back up before the $" */ - } - - if (nestlen) - { - RESIZE_MALLOCED_BUFFER (ret, retind, nestlen, retsize, 64); - strcpy (ret + retind, nestret); - retind += nestlen; - } - FREE (nestret); - } - } - /* Parse an old-style command substitution within double quotes as a - single word. */ - /* XXX - sh and ksh93 don't do this - XXX */ - else if MBTEST(open == '"' && ch == '`') - { - nestret = parse_matched_pair (0, '`', '`', &nestlen, rflags); -add_nestret: - if (nestret == &matched_pair_error) - { - free (ret); - return &matched_pair_error; - } - if (nestlen) - { - RESIZE_MALLOCED_BUFFER (ret, retind, nestlen, retsize, 64); - strcpy (ret + retind, nestret); - retind += nestlen; - } - FREE (nestret); - } -#if 0 - else if MBTEST(qc == '`' && (ch == '"' || ch == '\'') && in_comment == 0) - { - /* Add P_BACKQUOTE so backslash quotes the next character and - shell_getc does the right thing with \. We do this for - a measure of backwards compatibility -- it's not strictly the - right POSIX thing. */ - nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags|P_BACKQUOTE); - goto add_nestret; - } -#endif - else if MBTEST(open != '`' && was_dollar && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ - /* check for $(), $[], or ${} inside quoted string. */ - { - if (open == ch) /* undo previous increment */ - count--; - if (ch == '(') /* ) */ - nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags & ~P_DQUOTE); - else if (ch == '{') /* } */ - nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|rflags); - else if (ch == '[') /* ] */ - nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags); - - goto add_nestret; - } - was_dollar = MBTEST(ch == '$'); - } - - ret[retind] = '\0'; - if (lenp) - *lenp = retind; - return ret; -} - -#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) -/* Parse a double-paren construct. It can be either an arithmetic - command, an arithmetic `for' command, or a nested subshell. Returns - the parsed token, -1 on error, or -2 if we didn't do anything and - should just go on. */ -static int -parse_dparen (c) - int c; -{ - int cmdtyp, sline; - char *wval; - WORD_DESC *wd; - -#if defined (ARITH_FOR_COMMAND) - if (last_read_token == FOR) - { - arith_for_lineno = line_number; - cmdtyp = parse_arith_cmd (&wval, 0); - if (cmdtyp == 1) - { - wd = alloc_word_desc (); - wd->word = wval; - yylval.word_list = make_word_list (wd, (WORD_LIST *)NULL); - return (ARITH_FOR_EXPRS); - } - else - return -1; /* ERROR */ - } -#endif - -#if defined (DPAREN_ARITHMETIC) - if (reserved_word_acceptable (last_read_token)) - { - sline = line_number; - - cmdtyp = parse_arith_cmd (&wval, 0); - if (cmdtyp == 1) /* arithmetic command */ - { - wd = alloc_word_desc (); - wd->word = wval; - wd->flags = W_QUOTED|W_NOSPLIT|W_NOGLOB|W_DQUOTE; - yylval.word_list = make_word_list (wd, (WORD_LIST *)NULL); - return (ARITH_CMD); - } - else if (cmdtyp == 0) /* nested subshell */ - { - push_string (wval, 0, (alias_t *)NULL); - if ((parser_state & PST_CASEPAT) == 0) - parser_state |= PST_SUBSHELL; - return (c); - } - else /* ERROR */ - return -1; - } -#endif - - return -2; /* XXX */ -} - -/* We've seen a `(('. Look for the matching `))'. If we get it, return 1. - If not, assume it's a nested subshell for backwards compatibility and - return 0. In any case, put the characters we've consumed into a locally- - allocated buffer and make *ep point to that buffer. Return -1 on an - error, for example EOF. */ -static int -parse_arith_cmd (ep, adddq) - char **ep; - int adddq; -{ - int exp_lineno, rval, c; - char *ttok, *tokstr; - int ttoklen; - - exp_lineno = line_number; - ttok = parse_matched_pair (0, '(', ')', &ttoklen, 0); - rval = 1; - if (ttok == &matched_pair_error) - return -1; - /* Check that the next character is the closing right paren. If - not, this is a syntax error. ( */ - c = shell_getc (0); - if MBTEST(c != ')') - rval = 0; - - tokstr = (char *)xmalloc (ttoklen + 4); - - /* if ADDDQ != 0 then (( ... )) -> "..." */ - if (rval == 1 && adddq) /* arith cmd, add double quotes */ - { - tokstr[0] = '"'; - strncpy (tokstr + 1, ttok, ttoklen - 1); - tokstr[ttoklen] = '"'; - tokstr[ttoklen+1] = '\0'; - } - else if (rval == 1) /* arith cmd, don't add double quotes */ - { - strncpy (tokstr, ttok, ttoklen - 1); - tokstr[ttoklen-1] = '\0'; - } - else /* nested subshell */ - { - tokstr[0] = '('; - strncpy (tokstr + 1, ttok, ttoklen - 1); - tokstr[ttoklen] = ')'; - tokstr[ttoklen+1] = c; - tokstr[ttoklen+2] = '\0'; - } - - *ep = tokstr; - FREE (ttok); - return rval; -} -#endif /* DPAREN_ARITHMETIC || ARITH_FOR_COMMAND */ - -#if defined (COND_COMMAND) -static void -cond_error () -{ - char *etext; - - if (EOF_Reached && cond_token != COND_ERROR) /* [[ */ - parser_error (cond_lineno, _("unexpected EOF while looking for `]]'")); - else if (cond_token != COND_ERROR) - { - if (etext = error_token_from_token (cond_token)) - { - parser_error (cond_lineno, _("syntax error in conditional expression: unexpected token `%s'"), etext); - free (etext); - } - else - parser_error (cond_lineno, _("syntax error in conditional expression")); - } -} - -static COND_COM * -cond_expr () -{ - return (cond_or ()); -} - -static COND_COM * -cond_or () -{ - COND_COM *l, *r; - - l = cond_and (); - if (cond_token == OR_OR) - { - r = cond_or (); - l = make_cond_node (COND_OR, (WORD_DESC *)NULL, l, r); - } - return l; -} - -static COND_COM * -cond_and () -{ - COND_COM *l, *r; - - l = cond_term (); - if (cond_token == AND_AND) - { - r = cond_and (); - l = make_cond_node (COND_AND, (WORD_DESC *)NULL, l, r); - } - return l; -} - -static int -cond_skip_newlines () -{ - while ((cond_token = read_token (READ)) == '\n') - { - if (SHOULD_PROMPT ()) - prompt_again (); - } - return (cond_token); -} - -#define COND_RETURN_ERROR() \ - do { cond_token = COND_ERROR; return ((COND_COM *)NULL); } while (0) - -static COND_COM * -cond_term () -{ - WORD_DESC *op; - COND_COM *term, *tleft, *tright; - int tok, lineno; - char *etext; - - /* Read a token. It can be a left paren, a `!', a unary operator, or a - word that should be the first argument of a binary operator. Start by - skipping newlines, since this is a compound command. */ - tok = cond_skip_newlines (); - lineno = line_number; - if (tok == COND_END) - { - COND_RETURN_ERROR (); - } - else if (tok == '(') - { - term = cond_expr (); - if (cond_token != ')') - { - if (term) - dispose_cond_node (term); /* ( */ - if (etext = error_token_from_token (cond_token)) - { - parser_error (lineno, _("unexpected token `%s', expected `)'"), etext); - free (etext); - } - else - parser_error (lineno, _("expected `)'")); - COND_RETURN_ERROR (); - } - term = make_cond_node (COND_EXPR, (WORD_DESC *)NULL, term, (COND_COM *)NULL); - (void)cond_skip_newlines (); - } - else if (tok == BANG || (tok == WORD && (yylval.word->word[0] == '!' && yylval.word->word[1] == '\0'))) - { - if (tok == WORD) - dispose_word (yylval.word); /* not needed */ - term = cond_term (); - if (term) - term->flags |= CMD_INVERT_RETURN; - } - else if (tok == WORD && test_unop (yylval.word->word)) - { - op = yylval.word; - tok = read_token (READ); - if (tok == WORD) - { - tleft = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); - term = make_cond_node (COND_UNARY, op, tleft, (COND_COM *)NULL); - } - else - { - dispose_word (op); - if (etext = error_token_from_token (tok)) - { - parser_error (line_number, _("unexpected argument `%s' to conditional unary operator"), etext); - free (etext); - } - else - parser_error (line_number, _("unexpected argument to conditional unary operator")); - COND_RETURN_ERROR (); - } - - (void)cond_skip_newlines (); - } - else if (tok == WORD) /* left argument to binary operator */ - { - /* lhs */ - tleft = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); - - /* binop */ - tok = read_token (READ); - if (tok == WORD && test_binop (yylval.word->word)) - op = yylval.word; -#if defined (COND_REGEXP) - else if (tok == WORD && STREQ (yylval.word->word,"=~")) - op = yylval.word; -#endif - else if (tok == '<' || tok == '>') - op = make_word_from_token (tok); /* ( */ - /* There should be a check before blindly accepting the `)' that we have - seen the opening `('. */ - else if (tok == COND_END || tok == AND_AND || tok == OR_OR || tok == ')') - { - /* Special case. [[ x ]] is equivalent to [[ -n x ]], just like - the test command. Similarly for [[ x && expr ]] or - [[ x || expr ]] or [[ (x) ]]. */ - op = make_word ("-n"); - term = make_cond_node (COND_UNARY, op, tleft, (COND_COM *)NULL); - cond_token = tok; - return (term); - } - else - { - if (etext = error_token_from_token (tok)) - { - parser_error (line_number, _("unexpected token `%s', conditional binary operator expected"), etext); - free (etext); - } - else - parser_error (line_number, _("conditional binary operator expected")); - dispose_cond_node (tleft); - COND_RETURN_ERROR (); - } - - /* rhs */ - tok = read_token (READ); - if (tok == WORD) - { - tright = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); - term = make_cond_node (COND_BINARY, op, tleft, tright); - } - else - { - if (etext = error_token_from_token (tok)) - { - parser_error (line_number, _("unexpected argument `%s' to conditional binary operator"), etext); - free (etext); - } - else - parser_error (line_number, _("unexpected argument to conditional binary operator")); - dispose_cond_node (tleft); - dispose_word (op); - COND_RETURN_ERROR (); - } - - (void)cond_skip_newlines (); - } - else - { - if (tok < 256) - parser_error (line_number, _("unexpected token `%c' in conditional command"), tok); - else if (etext = error_token_from_token (tok)) - { - parser_error (line_number, _("unexpected token `%s' in conditional command"), etext); - free (etext); - } - else - parser_error (line_number, _("unexpected token %d in conditional command"), tok); - COND_RETURN_ERROR (); - } - return (term); -} - -/* This is kind of bogus -- we slip a mini recursive-descent parser in - here to handle the conditional statement syntax. */ -static COMMAND * -parse_cond_command () -{ - COND_COM *cexp; - - cexp = cond_expr (); - return (make_cond_command (cexp)); -} -#endif - -#if defined (ARRAY_VARS) -/* When this is called, it's guaranteed that we don't care about anything - in t beyond i. We do save and restore the chars, though. */ -static int -token_is_assignment (t, i) - char *t; - int i; -{ - unsigned char c, c1; - int r; - - c = t[i]; c1 = t[i+1]; - t[i] = '='; t[i+1] = '\0'; - r = assignment (t, (parser_state & PST_COMPASSIGN) != 0); - t[i] = c; t[i+1] = c1; - return r; -} - -/* XXX - possible changes here for `+=' */ -static int -token_is_ident (t, i) - char *t; - int i; -{ - unsigned char c; - int r; - - c = t[i]; - t[i] = '\0'; - r = legal_identifier (t); - t[i] = c; - return r; -} -#endif - -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_digit_token; - - /* DOLLAR_PRESENT becomes non-zero if we see a `$'. */ - int dollar_present; - - /* COMPOUND_ASSIGNMENT becomes non-zero if we are parsing a compound - assignment. */ - int compound_assignment; - - /* 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; - - /* The current delimiting character. */ - int cd; - int result, peek_char; - char *ttok, *ttrans; - int ttoklen, ttranslen; - intmax_t lvalue; - - if (token_buffer_size < TOKEN_DEFAULT_INITIAL_SIZE) - token = (char *)xrealloc (token, token_buffer_size = TOKEN_DEFAULT_INITIAL_SIZE); - - token_index = 0; - all_digit_token = DIGIT (character); - dollar_present = quoted = pass_next_character = compound_assignment = 0; - - for (;;) - { - if (character == EOF) - goto got_token; - - if (pass_next_character) - { - pass_next_character = 0; - goto got_character; - } - - cd = current_delimiter (dstack); - - /* Handle backslashes. Quote lots of things when not inside of - double-quotes, quote some things inside of double-quotes. */ - if MBTEST(character == '\\') - { - peek_char = shell_getc (0); - - /* Backslash-newline is ignored in all cases except - 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, note it now. */ - if (cd == 0 || cd == '`' || - (cd == '"' && peek_char >= 0 && (sh_syntaxtab[peek_char] & CBSDQUOTE))) - pass_next_character++; - - quoted = 1; - goto got_character; - } - } - - /* Parse a matched pair of quote characters. */ - if MBTEST(shellquote (character)) - { - push_delimiter (dstack, character); - ttok = parse_matched_pair (character, character, character, &ttoklen, (character == '`') ? P_COMMAND : 0); - pop_delimiter (dstack); - if (ttok == &matched_pair_error) - return -1; /* Bail immediately. */ - RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, - token_buffer_size, TOKEN_DEFAULT_GROW_SIZE); - token[token_index++] = character; - strcpy (token + token_index, ttok); - token_index += ttoklen; - all_digit_token = 0; - quoted = 1; - dollar_present |= (character == '"' && strchr (ttok, '$') != 0); - FREE (ttok); - goto next_character; - } - -#ifdef EXTENDED_GLOB - /* Parse a ksh-style extended pattern matching specification. */ - if (extended_glob && PATTERN_CHAR (character)) - { - peek_char = shell_getc (1); - if MBTEST(peek_char == '(') /* ) */ - { - push_delimiter (dstack, peek_char); - ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0); - pop_delimiter (dstack); - if (ttok == &matched_pair_error) - return -1; /* Bail immediately. */ - RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, - token_buffer_size, - TOKEN_DEFAULT_GROW_SIZE); - token[token_index++] = character; - token[token_index++] = peek_char; - strcpy (token + token_index, ttok); - token_index += ttoklen; - FREE (ttok); - dollar_present = all_digit_token = 0; - goto next_character; - } - else - shell_ungetc (peek_char); - } -#endif /* EXTENDED_GLOB */ - - /* If the delimiter character is not single quote, parse some of - the shell expansions that must be read as a single word. */ - if (shellexp (character)) - { - peek_char = shell_getc (1); - /* $(...), <(...), >(...), $((...)), ${...}, and $[...] constructs */ - if MBTEST(peek_char == '(' || \ - ((peek_char == '{' || peek_char == '[') && character == '$')) /* ) ] } */ - { - if (peek_char == '{') /* } */ - ttok = parse_matched_pair (cd, '{', '}', &ttoklen, P_FIRSTCLOSE); - else if (peek_char == '(') /* ) */ - { - /* XXX - push and pop the `(' as a delimiter for use by - the command-oriented-history code. This way newlines - appearing in the $(...) string get added to the - history literally rather than causing a possibly- - incorrect `;' to be added. ) */ - push_delimiter (dstack, peek_char); - ttok = parse_matched_pair (cd, '(', ')', &ttoklen, P_COMMAND); - pop_delimiter (dstack); - } - else - ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0); - if (ttok == &matched_pair_error) - return -1; /* Bail immediately. */ - RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, - token_buffer_size, - TOKEN_DEFAULT_GROW_SIZE); - token[token_index++] = character; - token[token_index++] = peek_char; - strcpy (token + token_index, ttok); - token_index += ttoklen; - FREE (ttok); - dollar_present = 1; - all_digit_token = 0; - goto next_character; - } - /* This handles $'...' and $"..." new-style quoted strings. */ - else if MBTEST(character == '$' && (peek_char == '\'' || peek_char == '"')) - { - int first_line; - - first_line = line_number; - push_delimiter (dstack, peek_char); - ttok = parse_matched_pair (peek_char, peek_char, peek_char, - &ttoklen, - (peek_char == '\'') ? P_ALLOWESC : 0); - pop_delimiter (dstack); - if (ttok == &matched_pair_error) - return -1; - if (peek_char == '\'') - { - ttrans = ansiexpand (ttok, 0, ttoklen - 1, &ttranslen); - free (ttok); - - /* Insert the single quotes and correctly quote any - embedded single quotes (allowed because P_ALLOWESC was - passed to parse_matched_pair). */ - ttok = sh_single_quote (ttrans); - free (ttrans); - ttranslen = strlen (ttok); - ttrans = ttok; - } - else - { - /* Try to locale-expand the converted string. */ - ttrans = localeexpand (ttok, 0, ttoklen - 1, first_line, &ttranslen); - free (ttok); - - /* Add the double quotes back */ - ttok = sh_mkdoublequoted (ttrans, ttranslen, 0); - free (ttrans); - ttranslen += 2; - ttrans = ttok; - } - - RESIZE_MALLOCED_BUFFER (token, token_index, ttranslen + 2, - token_buffer_size, - TOKEN_DEFAULT_GROW_SIZE); - strcpy (token + token_index, ttrans); - token_index += ttranslen; - FREE (ttrans); - quoted = 1; - all_digit_token = 0; - goto next_character; - } - /* This could eventually be extended to recognize all of the - shell's single-character parameter expansions, and set flags.*/ - else if MBTEST(character == '$' && peek_char == '$') - { - ttok = (char *)xmalloc (3); - ttok[0] = ttok[1] = '$'; - ttok[2] = '\0'; - RESIZE_MALLOCED_BUFFER (token, token_index, 3, - token_buffer_size, - TOKEN_DEFAULT_GROW_SIZE); - strcpy (token + token_index, ttok); - token_index += 2; - dollar_present = 1; - all_digit_token = 0; - FREE (ttok); - goto next_character; - } - else - shell_ungetc (peek_char); - } - -#if defined (ARRAY_VARS) - /* Identify possible array subscript assignment; match [...] */ - else if MBTEST(character == '[' && token_index > 0 && assignment_acceptable (last_read_token) && token_is_ident (token, token_index)) /* ] */ - { - ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0); - if (ttok == &matched_pair_error) - return -1; /* Bail immediately. */ - RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, - token_buffer_size, - TOKEN_DEFAULT_GROW_SIZE); - token[token_index++] = character; - strcpy (token + token_index, ttok); - token_index += ttoklen; - FREE (ttok); - all_digit_token = 0; - goto next_character; - } - /* Identify possible compound array variable assignment. */ - else if MBTEST(character == '=' && token_index > 0 && (assignment_acceptable (last_read_token) || (parser_state & PST_ASSIGNOK)) && token_is_assignment (token, token_index)) - { - peek_char = shell_getc (1); - if MBTEST(peek_char == '(') /* ) */ - { - ttok = parse_compound_assignment (&ttoklen); - - RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 4, - token_buffer_size, - TOKEN_DEFAULT_GROW_SIZE); - - token[token_index++] = '='; - token[token_index++] = '('; - if (ttok) - { - strcpy (token + token_index, ttok); - token_index += ttoklen; - } - token[token_index++] = ')'; - FREE (ttok); - all_digit_token = 0; - compound_assignment = 1; -#if 1 - goto next_character; -#else - goto got_token; /* ksh93 seems to do this */ -#endif - } - else - shell_ungetc (peek_char); - } -#endif - - /* When not parsing a multi-character word construct, shell meta- - characters break words. */ - if MBTEST(shellbreak (character)) - { - shell_ungetc (character); - goto got_token; - } - - got_character: - - all_digit_token &= DIGIT (character); - dollar_present |= character == '$'; - - if (character == CTLESC || character == CTLNUL) - token[token_index++] = CTLESC; - - token[token_index++] = character; - - RESIZE_MALLOCED_BUFFER (token, token_index, 1, token_buffer_size, - TOKEN_DEFAULT_GROW_SIZE); - - next_character: - if (character == '\n' && SHOULD_PROMPT ()) - 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 (dstack); - character = shell_getc (cd != '\'' && pass_next_character == 0); - } /* end for (;;) */ - -got_token: - - token[token_index] = '\0'; - - /* 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 MBTEST(all_digit_token && (character == '<' || character == '>' || \ - last_read_token == LESS_AND || \ - last_read_token == GREATER_AND)) - { - if (legal_number (token, &lvalue) && (int)lvalue == lvalue) - yylval.number = lvalue; - else - yylval.number = -1; - return (NUMBER); - } - - /* Check for special case tokens. */ - result = (last_shell_getc_is_singlebyte) ? special_case_tokens (token) : -1; - 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 MBTEST(posixly_correct) - CHECK_FOR_RESERVED_WORD (token); - - /* Aliases are expanded iff EXPAND_ALIASES is non-zero, and quoting - inhibits alias expansion. */ - if (expand_aliases && quoted == 0) - { - result = alias_expand_token (token); - if (result == RE_READ_TOKEN) - return (RE_READ_TOKEN); - else if (result == NO_EXPANSION) - parser_state &= ~PST_ALEXPNEXT; - } - - /* If not in Posix.2 mode, check for reserved words after alias - expansion. */ - if MBTEST(posixly_correct == 0) -#endif - CHECK_FOR_RESERVED_WORD (token); - - the_word = (WORD_DESC *)xmalloc (sizeof (WORD_DESC)); - the_word->word = (char *)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 (compound_assignment && token[token_index-1] == ')') - the_word->flags |= W_COMPASSIGN; - /* 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. */ - if (assignment (token, (parser_state & PST_COMPASSIGN) != 0)) - { - the_word->flags |= W_ASSIGNMENT; - /* Don't perform word splitting on assignment statements. */ - if (assignment_acceptable (last_read_token) || (parser_state & PST_COMPASSIGN) != 0) - the_word->flags |= W_NOSPLIT; - } - - if (command_token_position (last_read_token)) - { - struct builtin *b; - b = builtin_address_internal (token, 0); - if (b && (b->flags & ASSIGNMENT_BUILTIN)) - parser_state |= PST_ASSIGNOK; - else if (STREQ (token, "eval") || STREQ (token, "let")) - parser_state |= PST_ASSIGNOK; - } - - yylval.word = the_word; - - result = ((the_word->flags & (W_ASSIGNMENT|W_NOSPLIT)) == (W_ASSIGNMENT|W_NOSPLIT)) - ? ASSIGNMENT_WORD : WORD; - - switch (last_read_token) - { - case FUNCTION: - parser_state |= PST_ALLOWOPNBRC; - function_dstart = line_number; - break; - case CASE: - case SELECT: - case FOR: - if (word_top < MAX_CASE_NEST) - word_top++; - word_lineno[word_top] = line_number; - break; - } - - return (result); -} - -/* Return 1 if TOKSYM is a token that after being read would allow - a reserved word to be seen, else 0. */ -static int -reserved_word_acceptable (toksym) - int toksym; -{ - switch (toksym) - { - case '\n': - case ';': - case '(': - case ')': - case '|': - case '&': - case '{': - case '}': /* XXX */ - case AND_AND: - case BANG: - case DO: - case DONE: - case ELIF: - case ELSE: - case ESAC: - case FI: - case IF: - case OR_OR: - case SEMI_SEMI: - case THEN: - case TIME: - case TIMEOPT: - case UNTIL: - case WHILE: - case 0: - return 1; - default: - 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 (tokstr) - char *tokstr; -{ - int i; - for (i = 0; word_token_alist[i].word; i++) - if (STREQ (tokstr, word_token_alist[i].word)) - return i; - return -1; -} - -#if 0 -#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 = (char *)xmalloc (1); - temp_prompt[0] = '\0'; - } - - FREE (current_readline_prompt); - current_readline_prompt = temp_prompt; - } -} -#endif /* READLINE */ -#endif /* 0 */ - -#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, IN, - 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 () -{ - register int i; - - if (dstack.delimiter_depth != 0) - return ("\n"); - - /* 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 `(', and we're - not in the midst of parsing a case statement, assume it's a - parenthesized command and add the semicolon. */ - /*)(*/ - if (token_before_that == ')') - { - if (two_tokens_ago == '(') /*)*/ /* function def */ - return " "; - /* This does not work for subshells inside case statement - command lists. It's a suboptimal solution. */ - else if (parser_state & PST_CASESTMT) /* case statement pattern */ - return " "; - else - return "; "; /* (...) subshell */ - } - else if (token_before_that == WORD && two_tokens_ago == FUNCTION) - return " "; /* function def using `function name' without `()' */ - - else if (token_before_that == WORD && two_tokens_ago == FOR) - { - /* Tricky. `for i\nin ...' should not have a semicolon, but - `for i\ndo ...' should. We do what we can. */ - for (i = shell_input_line_index; whitespace(shell_input_line[i]); i++) - ; - if (shell_input_line[i] && shell_input_line[i] == 'i' && shell_input_line[i+1] == 'n') - return " "; - return ";"; - } - else if (two_tokens_ago == CASE && token_before_that == WORD && (parser_state & PST_CASESTMT)) - return " "; - - for (i = 0; no_semi_successors[i]; i++) - { - if (token_before_that == no_semi_successors[i]) - return (" "); - } - - return ("; "); -} -#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 == 0 || expanding_alias()) /* 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 = (char *)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; - } -} - -int -get_current_prompt_level () -{ - return ((current_prompt_string && current_prompt_string == ps2_prompt) ? 2 : 1); -} - -void -set_current_prompt_level (x) - int x; -{ - prompt_string_pointer = (x == 2) ? &ps2_prompt : &ps1_prompt; - current_prompt_string = *prompt_string_pointer; -} - -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) - \d the date in Day Mon Date format - \e escape (ascii 033) - \h the hostname up to the first `.' - \H the hostname - \j the number of active jobs - \l the basename of the shell's tty device name - \n CRLF - \r CR - \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 hh:mm am/pm format - \A the time in 24-hour hh:mm format - \D{fmt} the result of passing FMT to strftime(3) - \u your username - \v the version of bash (e.g., 2.00) - \V the release of bash, version + patchlevel (e.g., 2.00.0) - \w the current working directory - \W the last element of $PWD - \! the history number of this command - \# the command 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 48 -char * -decode_prompt_string (string) - char *string; -{ - WORD_LIST *list; - char *result, *t; - struct dstack save_dstack; - int last_exit_value; -#if defined (PROMPT_STRING_DECODE) - int result_size, result_index; - int c, n, i; - char *temp, octal_string[4]; - struct tm *tm; - time_t the_time; - char timebuf[128]; - char *timefmt; - - result = (char *)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 = (char *)xmalloc (3); - - if (n == CTLESC || n == CTLNUL) - { - temp[0] = CTLESC; - temp[1] = n; - temp[2] = '\0'; - } - else if (n == -1) - { - temp[0] = '\\'; - temp[1] = '\0'; - } - else - { - temp[0] = n; - temp[1] = '\0'; - } - - for (c = 0; n != -1 && c < 3 && ISOCTAL (*string); c++) - string++; - - c = 0; /* tested at add_string: */ - goto add_string; - - case 'd': - case 't': - case 'T': - case '@': - case 'A': - /* Make the current time/date into a string. */ - (void) time (&the_time); - tm = localtime (&the_time); - - if (c == 'd') - n = strftime (timebuf, sizeof (timebuf), "%a %b %d", tm); - else if (c == 't') - n = strftime (timebuf, sizeof (timebuf), "%H:%M:%S", tm); - else if (c == 'T') - n = strftime (timebuf, sizeof (timebuf), "%I:%M:%S", tm); - else if (c == '@') - n = strftime (timebuf, sizeof (timebuf), "%I:%M %p", tm); - else if (c == 'A') - n = strftime (timebuf, sizeof (timebuf), "%H:%M", tm); - - if (n == 0) - timebuf[0] = '\0'; - else - timebuf[sizeof(timebuf) - 1] = '\0'; - - temp = savestring (timebuf); - goto add_string; - - case 'D': /* strftime format */ - if (string[1] != '{') /* } */ - goto not_escape; - - (void) time (&the_time); - tm = localtime (&the_time); - string += 2; /* skip { */ - timefmt = xmalloc (strlen (string) + 3); - for (t = timefmt; *string && *string != '}'; ) - *t++ = *string++; - *t = '\0'; - c = *string; /* tested at add_string */ - if (timefmt[0] == '\0') - { - timefmt[0] = '%'; - timefmt[1] = 'X'; /* locale-specific current time */ - timefmt[2] = '\0'; - } - n = strftime (timebuf, sizeof (timebuf), timefmt, tm); - free (timefmt); - - if (n == 0) - timebuf[0] = '\0'; - else - timebuf[sizeof(timebuf) - 1] = '\0'; - - if (promptvars || posixly_correct) - /* Make sure that expand_prompt_string is called with a - second argument of Q_DOUBLE_QUOTES if we use this - function here. */ - temp = sh_backslash_quote_for_double_quotes (timebuf); - else - temp = savestring (timebuf); - goto add_string; - - case 'n': - temp = (char *)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 'v': - case 'V': - temp = (char *)xmalloc (16); - if (c == 'v') - strcpy (temp, dist_version); - else - sprintf (temp, "%s.%d", dist_version, patch_level); - goto add_string; - - case 'w': - case 'W': - { - /* Use the value of PWD because it is much more efficient. */ - char t_string[PATH_MAX]; - int tlen; - - temp = get_string_value ("PWD"); - - if (temp == 0) - { - if (getcwd (t_string, sizeof(t_string)) == 0) - { - t_string[0] = '.'; - tlen = 1; - } - else - tlen = strlen (t_string); - } - else - { - tlen = sizeof (t_string) - 1; - strncpy (t_string, temp, tlen); - } - t_string[tlen] = '\0'; - -#define ROOT_PATH(x) ((x)[0] == '/' && (x)[1] == 0) -#define DOUBLE_SLASH_ROOT(x) ((x)[0] == '/' && (x)[1] == '/' && (x)[2] == 0) - /* Abbreviate \W as ~ if $PWD == $HOME */ - if (c == 'W' && (((t = get_string_value ("HOME")) == 0) || STREQ (t, t_string) == 0)) - { - if (ROOT_PATH (t_string) == 0 && DOUBLE_SLASH_ROOT (t_string) == 0) - { - t = strrchr (t_string, '/'); - if (t) - strcpy (t_string, t + 1); - } - } -#undef ROOT_PATH -#undef DOUBLE_SLASH_ROOT - else - /* polite_directory_format is guaranteed to return a string - no longer than PATH_MAX - 1 characters. */ - strcpy (t_string, polite_directory_format (t_string)); - - /* If we're going to be expanding the prompt string later, - quote the directory name. */ - if (promptvars || posixly_correct) - /* Make sure that expand_prompt_string is called with a - second argument of Q_DOUBLE_QUOTES if we use this - function here. */ - temp = sh_backslash_quote_for_double_quotes (t_string); - else - temp = savestring (t_string); - - goto add_string; - } - - case 'u': - if (current_user.user_name == 0) - get_current_user_info (); - 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 '$': - t = temp = (char *)xmalloc (3); - if ((promptvars || posixly_correct) && (current_user.euid != 0)) - *t++ = '\\'; - *t++ = current_user.euid == 0 ? '#' : '$'; - *t = '\0'; - goto add_string; - - case 'j': - temp = itos (count_all_jobs ()); - goto add_string; - - case 'l': -#if defined (HAVE_TTYNAME) - temp = (char *)ttyname (fileno (stdin)); - t = temp ? base_pathname (temp) : "tty"; - temp = savestring (t); -#else - temp = savestring ("tty"); -#endif /* !HAVE_TTYNAME */ - goto add_string; - -#if defined (READLINE) - case '[': - case ']': - if (no_line_editing) - { - string++; - break; - } - temp = (char *)xmalloc (3); - n = (c == '[') ? RL_PROMPT_START_IGNORE : RL_PROMPT_END_IGNORE; - i = 0; - if (n == CTLESC || n == CTLNUL) - temp[i++] = CTLESC; - temp[i++] = n; - temp[i] = '\0'; - goto add_string; -#endif /* READLINE */ - - case '\\': - case 'a': - case 'e': - case 'r': - temp = (char *)xmalloc (2); - if (c == 'a') - temp[0] = '\07'; - else if (c == 'e') - temp[0] = '\033'; - else if (c == 'r') - temp[0] = '\r'; - else /* (c == '\\') */ - temp[0] = c; - temp[1] = '\0'; - goto add_string; - - default: -not_escape: - temp = (char *)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 - { - RESIZE_MALLOCED_BUFFER (result, result_index, 3, result_size, PROMPT_GROWTH); - result[result_index++] = c; - result[result_index] = '\0'; - } - } -#else /* !PROMPT_STRING_DECODE */ - result = savestring (string); -#endif /* !PROMPT_STRING_DECODE */ - - /* Save the delimiter stack and point `dstack' to temp space so any - command substitutions in the prompt string won't result in screwing - up the parser's quoting state. */ - save_dstack = dstack; - dstack = temp_dstack; - dstack.delimiter_depth = 0; - - /* Perform variable and parameter expansion and command substitution on - the prompt string. */ - if (promptvars || posixly_correct) - { - last_exit_value = last_command_exit_value; - list = expand_prompt_string (result, Q_DOUBLE_QUOTES); - free (result); - result = string_list (list); - dispose_words (list); - last_command_exit_value = last_exit_value; - } - else - { - t = dequote_string (result); - free (result); - result = t; - } - - dstack = save_dstack; - - return (result); -} - -/************************************************ - * * - * ERROR HANDLING * - * * - ************************************************/ - -/* Report a syntax error, and restart the parser. Call here for fatal - errors. */ -int -yyerror (msg) - const char *msg; -{ - report_syntax_error ((char *)NULL); - reset_parser (); - return (0); -} - -static char * -error_token_from_token (tok) - int tok; -{ - char *t; - - if (t = find_token_in_alist (tok, word_token_alist, 0)) - return t; - - if (t = find_token_in_alist (tok, other_token_alist, 0)) - return t; - - t = (char *)NULL; - /* This stuff is dicy and needs closer inspection */ - switch (current_token) - { - case WORD: - case ASSIGNMENT_WORD: - if (yylval.word) - t = savestring (yylval.word->word); - break; - case NUMBER: - t = itos (yylval.number); - break; - case ARITH_CMD: - if (yylval.word_list) - t = string_list (yylval.word_list); - break; - case ARITH_FOR_EXPRS: - if (yylval.word_list) - t = string_list_internal (yylval.word_list, " ; "); - break; - case COND_CMD: - t = (char *)NULL; /* punt */ - break; - } - - return t; -} - -static char * -error_token_from_text () -{ - char *msg, *t; - int token_end, i; - - t = shell_input_line; - i = shell_input_line_index; - token_end = 0; - msg = (char *)NULL; - - 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++; - - /* Return our idea of the offending token. */ - if (token_end || (i == 0 && token_end == 0)) - { - if (token_end) - msg = substring (t, i, token_end); - else /* one-character token */ - { - msg = (char *)xmalloc (2); - msg[0] = t[i]; - msg[1] = '\0'; - } - } - - return (msg); -} - -static void -print_offending_line () -{ - char *msg; - int token_end; - - msg = savestring (shell_input_line); - token_end = strlen (msg); - while (token_end && msg[token_end - 1] == '\n') - msg[--token_end] = '\0'; - - parser_error (line_number, "`%s'", msg); - free (msg); -} - -/* 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 *msg; - - if (message) - { - parser_error (line_number, "%s", message); - if (interactive && EOF_Reached) - EOF_Reached = 0; - last_command_exit_value = EX_USAGE; - return; - } - - /* If the line of input we're reading is not null, try to find the - objectionable token. First, try to figure out what token the - parser's complaining about by looking at current_token. */ - if (current_token != 0 && EOF_Reached == 0 && (msg = error_token_from_token (current_token))) - { - parser_error (line_number, _("syntax error near unexpected token `%s'"), msg); - free (msg); - - if (interactive == 0) - print_offending_line (); - - last_command_exit_value = EX_USAGE; - return; - } - - /* If looking at the current token doesn't prove fruitful, try to find the - offending token by analyzing the text of the input line near the current - input line index and report what we find. */ - if (shell_input_line && *shell_input_line) - { - msg = error_token_from_text (); - if (msg) - { - parser_error (line_number, _("syntax error near `%s'"), msg); - free (msg); - } - - /* If not interactive, print the line containing the error. */ - if (interactive == 0) - print_offending_line (); - } - else - { - msg = EOF_Reached ? _("syntax error: unexpected end of file") : _("syntax error"); - parser_error (line_number, "%s", msg); - /* When the shell is interactive, this file uses EOF_Reached - only for error reporting. Other mechanisms are used to - decide whether or not to exit. */ - if (interactive && EOF_Reached) - EOF_Reached = 0; - } - - 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; -{ -} - -/************************************************ - * * - * EOF HANDLING * - * * - ************************************************/ - -/* 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 parsing state. */ - last_read_token = current_token = '\n'; - /* Reset the prompt string to be $PS1. */ - prompt_string_pointer = (char **)NULL; - prompt_again (); - 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; - } -} - -/************************************************ - * * - * STRING PARSING FUNCTIONS * - * * - ************************************************/ - -/* It's very important that these two functions treat the characters - between ( and ) identically. */ - -static WORD_LIST parse_string_error; - -/* Take a string and run it through the shell parser, returning the - resultant word list. Used by compound array assignment. */ -WORD_LIST * -parse_string_to_word_list (s, flags, whom) - char *s; - int flags; - const char *whom; -{ - WORD_LIST *wl; - int tok, orig_current_token, orig_line_number, orig_input_terminator; - int orig_line_count; - int old_echo_input, old_expand_aliases; -#if defined (HISTORY) - int old_remember_on_history, old_history_expansion_inhibited; -#endif - -#if defined (HISTORY) - old_remember_on_history = remember_on_history; -# if defined (BANG_HISTORY) - old_history_expansion_inhibited = history_expansion_inhibited; -# endif - bash_history_disable (); -#endif - - orig_line_number = line_number; - orig_line_count = current_command_line_count; - orig_input_terminator = shell_input_line_terminator; - old_echo_input = echo_input_at_read; - old_expand_aliases = expand_aliases; - - push_stream (1); - last_read_token = WORD; /* WORD to allow reserved words here */ - current_command_line_count = 0; - echo_input_at_read = expand_aliases = 0; - - with_input_from_string (s, whom); - wl = (WORD_LIST *)NULL; - - if (flags & 1) - parser_state |= PST_COMPASSIGN; - - while ((tok = read_token (READ)) != yacc_EOF) - { - if (tok == '\n' && *bash_input.location.string == '\0') - break; - if (tok == '\n') /* Allow newlines in compound assignments */ - continue; - if (tok != WORD && tok != ASSIGNMENT_WORD) - { - line_number = orig_line_number + line_number - 1; - orig_current_token = current_token; - current_token = tok; - yyerror (NULL); /* does the right thing */ - current_token = orig_current_token; - if (wl) - dispose_words (wl); - wl = &parse_string_error; - break; - } - wl = make_word_list (yylval.word, wl); - } - - last_read_token = '\n'; - pop_stream (); - -#if defined (HISTORY) - remember_on_history = old_remember_on_history; -# if defined (BANG_HISTORY) - history_expansion_inhibited = old_history_expansion_inhibited; -# endif /* BANG_HISTORY */ -#endif /* HISTORY */ - - echo_input_at_read = old_echo_input; - expand_aliases = old_expand_aliases; - - current_command_line_count = orig_line_count; - shell_input_line_terminator = orig_input_terminator; - - if (flags & 1) - parser_state &= ~PST_COMPASSIGN; - - if (wl == &parse_string_error) - { - last_command_exit_value = EXECUTION_FAILURE; - if (interactive_shell == 0 && posixly_correct) - jump_to_top_level (FORCE_EOF); - else - jump_to_top_level (DISCARD); - } - - return (REVERSE_LIST (wl, WORD_LIST *)); -} - -static char * -parse_compound_assignment (retlenp) - int *retlenp; -{ - WORD_LIST *wl, *rl; - int tok, orig_line_number, orig_token_size, orig_last_token, assignok; - char *saved_token, *ret; - - saved_token = token; - orig_token_size = token_buffer_size; - orig_line_number = line_number; - orig_last_token = last_read_token; - - last_read_token = WORD; /* WORD to allow reserved words here */ - - token = (char *)NULL; - token_buffer_size = 0; - - assignok = parser_state&PST_ASSIGNOK; /* XXX */ - - wl = (WORD_LIST *)NULL; /* ( */ - parser_state |= PST_COMPASSIGN; - - while ((tok = read_token (READ)) != ')') - { - if (tok == '\n') /* Allow newlines in compound assignments */ - { - if (SHOULD_PROMPT ()) - prompt_again (); - continue; - } - if (tok != WORD && tok != ASSIGNMENT_WORD) - { - current_token = tok; /* for error reporting */ - if (tok == yacc_EOF) /* ( */ - parser_error (orig_line_number, _("unexpected EOF while looking for matching `)'")); - else - yyerror(NULL); /* does the right thing */ - if (wl) - dispose_words (wl); - wl = &parse_string_error; - break; - } - wl = make_word_list (yylval.word, wl); - } - - FREE (token); - token = saved_token; - token_buffer_size = orig_token_size; - - parser_state &= ~PST_COMPASSIGN; - - if (wl == &parse_string_error) - { - last_command_exit_value = EXECUTION_FAILURE; - last_read_token = '\n'; /* XXX */ - if (interactive_shell == 0 && posixly_correct) - jump_to_top_level (FORCE_EOF); - else - jump_to_top_level (DISCARD); - } - - last_read_token = orig_last_token; /* XXX - was WORD? */ - - if (wl) - { - rl = REVERSE_LIST (wl, WORD_LIST *); - ret = string_list (rl); - dispose_words (rl); - } - else - ret = (char *)NULL; - - if (retlenp) - *retlenp = (ret && *ret) ? strlen (ret) : 0; - - if (assignok) - parser_state |= PST_ASSIGNOK; - - return ret; -} - -/************************************************ - * * - * SAVING AND RESTORING PARTIAL PARSE STATE * - * * - ************************************************/ - -sh_parser_state_t * -save_parser_state (ps) - sh_parser_state_t *ps; -{ -#if defined (ARRAY_VARS) - SHELL_VAR *v; -#endif - - if (ps == 0) - ps = (sh_parser_state_t *)xmalloc (sizeof (sh_parser_state_t)); - if (ps == 0) - return ((sh_parser_state_t *)NULL); - - ps->parser_state = parser_state; - ps->token_state = save_token_state (); - - ps->input_line_terminator = shell_input_line_terminator; - ps->eof_encountered = eof_encountered; - - ps->current_command_line_count = current_command_line_count; - -#if defined (HISTORY) - ps->remember_on_history = remember_on_history; -# if defined (BANG_HISTORY) - ps->history_expansion_inhibited = history_expansion_inhibited; -# endif -#endif - - ps->last_command_exit_value = last_command_exit_value; -#if defined (ARRAY_VARS) - v = find_variable ("PIPESTATUS"); - if (v && array_p (v) && array_cell (v)) - ps->pipestatus = array_copy (array_cell (v)); - else - ps->pipestatus = (ARRAY *)NULL; -#endif - - ps->last_shell_builtin = last_shell_builtin; - ps->this_shell_builtin = this_shell_builtin; - - ps->expand_aliases = expand_aliases; - ps->echo_input_at_read = echo_input_at_read; - - return (ps); -} - -void -restore_parser_state (ps) - sh_parser_state_t *ps; -{ -#if defined (ARRAY_VARS) - SHELL_VAR *v; -#endif - - if (ps == 0) - return; - - parser_state = ps->parser_state; - if (ps->token_state) - { - restore_token_state (ps->token_state); - free (ps->token_state); - } - - shell_input_line_terminator = ps->input_line_terminator; - eof_encountered = ps->eof_encountered; - - current_command_line_count = ps->current_command_line_count; - -#if defined (HISTORY) - remember_on_history = ps->remember_on_history; -# if defined (BANG_HISTORY) - history_expansion_inhibited = ps->history_expansion_inhibited; -# endif -#endif - - last_command_exit_value = ps->last_command_exit_value; -#if defined (ARRAY_VARS) - v = find_variable ("PIPESTATUS"); - if (v && array_p (v) && array_cell (v)) - { - array_dispose (array_cell (v)); - var_setarray (v, ps->pipestatus); - } -#endif - - last_shell_builtin = ps->last_shell_builtin; - this_shell_builtin = ps->this_shell_builtin; - - expand_aliases = ps->expand_aliases; - echo_input_at_read = ps->echo_input_at_read; -} - -/************************************************ - * * - * MULTIBYTE CHARACTER HANDLING * - * * - ************************************************/ - -#if defined (HANDLE_MULTIBYTE) -static void -set_line_mbstate () -{ - int i, previ, len, c; - mbstate_t mbs, prevs; - size_t mbclen; - - if (shell_input_line == NULL) - return; - len = strlen (shell_input_line); /* XXX - shell_input_line_len ? */ - FREE (shell_input_line_property); - shell_input_line_property = (char *)xmalloc (len + 1); - - memset (&prevs, '\0', sizeof (mbstate_t)); - for (i = previ = 0; i < len; i++) - { - mbs = prevs; - - c = shell_input_line[i]; - if (c == EOF) - { - int j; - for (j = i; j < len; j++) - shell_input_line_property[j] = 1; - break; - } - - mbclen = mbrlen (shell_input_line + previ, i - previ + 1, &mbs); - if (mbclen == 1 || mbclen == (size_t)-1) - { - mbclen = 1; - previ = i + 1; - } - else if (mbclen == (size_t)-2) - mbclen = 0; - else if (mbclen > 1) - { - mbclen = 0; - previ = i + 1; - prevs = mbs; - } - else - { - /* XXX - what to do if mbrlen returns 0? (null wide character) */ - int j; - for (j = i; j < len; j++) - shell_input_line_property[j] = 1; - break; - } - - shell_input_line_property[i] = mbclen; - } -} -#endif /* HANDLE_MULTIBYTE */ diff --git a/parse.y.regexp b/parse.y.regexp deleted file mode 100644 index fb74309b7..000000000 --- a/parse.y.regexp +++ /dev/null @@ -1,24 +0,0 @@ -#ifdef COND_REGEXP - /* When parsing a regexp as a single word inside a conditional command, - we need to special-case characters special to both the shell and - regular expressions. Right now, that is only '(' and '|'. */ /*)*/ - if MBTEST((parser_state & PST_REGEXP) && (character == '(' || character == '|')) /*)*/ - { - if (character == '|') - goto got_character; - - push_delimiter (dstack, character); - ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0); - pop_delimiter (dstack); - if (ttok == &matched_pair_error) - return -1; /* Bail immediately. */ - RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, - token_buffer_size, TOKEN_DEFAULT_GROW_SIZE); - token[token_index++] = character; - strcpy (token + token_index, ttok); - token_index += ttoklen; - FREE (ttok); - dollar_present = all_digit_token = 0; - goto next_character; - } -#endif /* COND_REGEXP */ diff --git a/shell-compat.patch b/shell-compat.patch deleted file mode 100644 index 2f204f855..000000000 --- a/shell-compat.patch +++ /dev/null @@ -1,84 +0,0 @@ -*** ../bash-3.2-patched/execute_cmd.c 2007-12-14 21:12:39.000000000 -0500 ---- execute_cmd.c 2008-02-22 21:20:40.000000000 -0500 -*************** -*** 2547,2551 **** - if (arg1 == 0) - arg1 = nullstr; -! arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0)); - if (arg2 == 0) - arg2 = nullstr; ---- 2552,2557 ---- - if (arg1 == 0) - arg1 = nullstr; -! arg2 = cond_expand_word (cond->right->op, -! (rmatch && shell_compatibility_level > 31) ? 2 : (patmatch ? 1 : 0)); - if (arg2 == 0) - arg2 = nullstr; -*** ../bash-3.2-patched/shell.h 2003-06-01 15:04:36.000000000 -0400 ---- shell.h 2008-02-22 21:16:48.000000000 -0500 -*************** -*** 90,93 **** ---- 90,94 ---- - extern int interactive, interactive_shell; - extern int startup_state; -+ extern int shell_compatibility_level; - - /* Structure to pass around that holds a bitmap of file descriptors -*** ../bash-3.2-patched/version.c 2007-12-14 21:12:29.000000000 -0500 ---- version.c 2008-04-10 08:22:22.000000000 -0400 -*************** -*** 44,47 **** ---- 44,50 ---- - const char *sccs_version = SCCSVERSION; - -+ /* If == 31, shell compatible with bash-3.1, = =32 with bash-3.2, and so on */ -+ int shell_compatibility_level = 32; -+ - /* Functions for getting, setting, and displaying the shell version. */ - -*** ../bash-3.2-patched/builtins/shopt.def 2005-02-19 17:25:03.000000000 -0500 ---- builtins/shopt.def 2008-04-10 08:13:32.000000000 -0400 -*************** -*** 102,105 **** ---- 102,107 ---- - static int set_shellopts_after_change __P((int)); - -+ static int set_compatibility_level __P((int)); -+ - #if defined (RESTRICTED_SHELL) - static int set_restricted_shell __P((int)); -*************** -*** 107,110 **** ---- 109,113 ---- - - static int shopt_login_shell; -+ static int shopt_compat31; - - typedef int shopt_set_func_t __P((int)); -*************** -*** 122,125 **** ---- 125,129 ---- - { "cmdhist", &command_oriented_history, (shopt_set_func_t *)NULL }, - #endif -+ { "compat31", &shopt_compat31, set_compatibility_level }, - { "dotglob", &glob_dot_filenames, (shopt_set_func_t *)NULL }, - { "execfail", &no_exit_on_failed_exec, (shopt_set_func_t *)NULL }, -*************** -*** 460,463 **** ---- 464,479 ---- - } - -+ static int -+ set_compatibility_level (mode) -+ int mode; -+ { -+ /* Need to change logic here as we add more compatibility levels */ -+ if (shopt_compat31) -+ shell_compatibility_level = 31; -+ else -+ shell_compatibility_level = 32; -+ return 0; -+ } -+ - #if defined (RESTRICTED_SHELL) - /* Don't allow the value of restricted_shell to be modified. */ diff --git a/tests/core b/tests/core deleted file mode 100644 index 0f50e9d8f5876dd3184b34e9810b28665c0eba37..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 5174145 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®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

MiW;%+sAFm>{^fU*3|TJ6j}1km%&ch}|n{Vmaic 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⩔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≈MX{&96U3kf0W4`2Y0KTPxh_@!C|M) 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�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ⓈV? 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 z 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�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�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

C8QAXqA?A@cc_YSnpA>K*!d57=tsvx>~1* zd|lJNu1=0e5Ao)8cu*p^2I*s_d>@$NgpWfKw4gj z;(sOfX;SK|tFcdhyTp>@?|pxoRrZPp)brp2%HG!Z^|ki4v~%ht;}VSTvQIkpm~n@v zd5`O>#y;_z&Xsrt<0Qvne05KP9EZ+MJ20-tVM>n!pYggwj|1;{4v}|uqVK)nHO8T~ z2eg8|J=!`BF28<-I0<>o9x~ndu#k3+f^f?C-VxBF5$0n)!Tb-#^QY>P1>b$29Rv>D zPa8(ARBYrvhOwY1NGhgp~gdw|3|^29;TeODwm0yeQ;bP9AmU! z2krPI_i=ZK%5X~TYbVczYzbWAzTUlUb)u5FKR`q8=YH_8$j0|hU~fD zlRYoVnBl$%zw_H)l-;T?u-0y6Tvoco={J1%QN%hq*Q}#o*n!#Yg7)u+u?}9&>U98m zZjTst9JJTW8LsF^BnzM0XJ2!u#EBdQO?dhSH`s5wv>R;#u52Q%jIG0!Q&_KK>u`n7 zc&+1f3V46ShbzAK;*^Rh+UB##aK5T(o1v|ZF$`Y3V1>@{z-RjGxQ$95R<<_q!yxm4 zbDh#YSTMwxb;A5jH>%@}CKTNX{IFNqUKQ*rpIS`kQ{!0x4|9D{9;Yr!xvkUe(D?KG z6NguGaEJKL!yn-C!*j%+u9cW=;LqtlWQ;`9E`$Qh$*6bC<@S-}B=S>m+{# z?(c64f*$P1l#D3+IX}5VM+1*}JY#Ad{~TV26MQ!1;~5j0XLS4cr+zQ_=PB@s!-{8= zGp8;0p>bRw2fm^AVPq*ow})hY!L0IeWJ)Shf#alkt>hg%3liUO{`ybKIMD-rA@IML z+RGFLKVrR*wKsA<3VD7H+MU6(q2krpYVDg3P?y@CUjA3PcZJufz#Xj5$EW{^b@Lg< z<~EMafrL?-?Yj67b<3~8}#@{oh9Q;$E4qZ`Mdzj$y6m^ zxq-Ty&bME#&zT=}o1{(YVivmpGJ7jw#-3jJY6#{a80$4o%_nNSApjdLD*)Y|Fs z%fndXf9;b8PpTMAzdS6C6K5wBj{4*QN9xSv*wPlb|E@MQXwLyYg%v8R{vnpSzSr=H$2@iwui6S{wVHlg&EfIs%M(-(WH-wPdk zTE+fNdUMjb8hiRy-$rk2tqmtor1(y6;d;KqabWCe=T%})`Hpg&hUs1G+d6!#$h{RG zOLD9DDEpSvai*F!hkWmaXCv~*o{p@*kt*`Vp5DZ{(sF(YVINgF=ZYD7+NontwS51^ z=n4-JCgJ9Fue1$Xv`Q|7g9;J^S!bQL+rr z$y5H8FwRSUYp{XhHZ)8{zom^vA!4!ZN;gx)`kXSZuVMJ4x$VvRgFUaWG$ z@{HOurp$YPV6;$_>zIf})-mqIvvR*1)+@`z=uhgDw)+RA-|>QyC$w!KsGeJa@j|Q( zRe$9fBgwuW7%2oDRp&!726anb`!8uH@apj594Sjl8=z`?p5NB?;+ zmq%_)G5%8PuJkLGGgqgIXO;83iGHeto@c&iOe^ccJpT*pSSo~^@U4R>#@Ei9PVGuQ zc*dGCM=a{owo6$T+Z&ACxa`{-xpMBWKVFzIo;uz)ycD+M$w1Fv${enZw#j?FZ>Unm zf^%PtDvRr4l+Eba&p7Y3j;GgQ&x_tWT%RRwqt3V&y9iyg0R1nct_PS4bv}sh7GtZ~ zs`5b;3>l{{GDq~VVbu&7HuLlpe@)5iC4~JH`U;+0HUQevE&Xo7cn|960gj#xyO}fL z4C~pn6u$c+biitqjh~H)s=0{F-B>dja%;ba@%QpQ_2~M5tz3?!`ANMkbQu3oH*KtvOF6t7qY+5r(@CHjW+wkCsG3{r`2Z6-A&oZ zuKVXhc5*4QD?S_9)yaHiGa-BLRAkqkGYzho4B7i88`kE|nh#rh7Q$9N=6~DauwCC0 zc8Zr8tp(J#8+t^uFMpM@6t=c4MC|6IIDT}Yaci;n4)eZm%&_an5?inTYlJOygE_I$~v~8@EQmvvyB4ZjDVwtQ_z}Of+tdgU61JH*T$Q zBi4l5xYf!>EH~e{wHC7J#j(b%^`jBM+qiXiGVtt=F?O{WOB3yV0{4Hf@9)C>UAX^S z-0#NyKHNWr`ycV%Kh~odYpvUVe2_Ujf-3iVi_F6*edXpD=0be~TvBxTgT$4*%-OlN ztQ)a+uas4^{XHx@Zld1v$u(ssBKDruveMVt%(9cF6C)k;mz|2(dsoUTUbB^Dr$eas z)wT7`MC^U5Wo5n9EIS)Qy|1pV7i&McQda5dMJx+^jgfEr%7*$@_AlSK+^1=&Jl|g9 z!T;*N57*AiMU5{%`pFDd<@h<-uv9H9hxv=HQBb8@Y zbLVw|UqE*{QQM>G%xtK8kIum>W!uG2_io(RuJV&-8zf(9vc+ordvp(e`|-OAzgql0 zj^F*?`N_*Xm$|Hk{#eFqqCI(zlF`wlV>JtMq3(MQEC62p4x=B}i-0%G zcJUwTKp*y|LZ@XvyHu{bE_rsQv61EY!!xYEwA&harKc^DUTo*t^CJ8%=H>3tx#u8X zEUx&^RX+W~QPXbDhEDfP7?eq6-g{H&ZHB>m`Tk7gTynJOT<4@|@1ATr*S%!g+m@Qn zIm4#CXSnHH&xmR79cen(mox2TuIb#skZJE5YC6}SH|D+^3rX3$^I`^<^+BI&| zxt1x@uAOQ+*LumctxHYk+UJ|jJvEE6`V8EyXVEt~w~=%Asksm23DX4Thhs3n94MF@ zncuEMR7jhDhuB1!fVs_+fm1TRY`TeMEmQinF^=`nB`K55s(kG9mw!g`oWLo@|6N|m z`HFVVa3An$8*$x6we~Bp4QT_IZj}0uJi`Vunrb6#Q$D<`eexgBZM6B@konR@!AroA z8poR-wClakhr0JZ3E6Qtm@LD$7g{KXD_y-b)hTMBCq6+OI25^Y3HJfqKh~w%xu0bn zrGL|w)53XVE=2kta=@)N^$quln;q&5))4a~42ODUKKF4$<|2S>(!H0osmpXt`jk<3 z=V1*8ag)#6)%Q`-bCtu`4w>oY|H1FurSCzmyFa9k0NCG0+)j#6O^dd5;@MugwnX6v zeb4GRU)-NJjWI#_YkluZsUMDWt#&e3r^$S_YOTs~G5=AI_x1e78_x-qOZn5?(%vVk zQ10(oZb5wq+%f+~f7k5)4)_1PMcb6QKaJ-N=yv{+<@?lF*5LjJ`uke{_gSo;vsgb_ ztRJkU-B?H6SU20SZXB$eJy``z7pUo!}+|SJV;l}ev z`Mg7w<2Zjymz(gH<9J>Ip3pwfDRr_;jiS{q@gnHfJ7OL`j7u^15-_)Wr|B?HO$cko zWWLPqkSLKjbCP*VpBZimLC;j83n7Sg|@Fx6QE!sMA)8;>Yl z{a_d7U@2%fV;nmn@9xHYbc4rj!+bcGg7zMaVb4?$@+9VAHfSejF%OV&_hFv;Cm?f7 zU>-)m6ER;8=Yn<(=Bs5WXxC!CS|O8In6Gxs)l+CAruCH?(Cw0AKS-|31Nu|eC3VYZ z7!$Hl_vO9p%PG}2;^n(_-yT|vhtK?1euFW6it8EohkSKx<2U`P4&rjXuH(P>>(FcP zI_T2i4F$jLTT|P(-gxGTT8rkbzIQRj`=0r2(yuwS?uhT)zb9tY`XL@gbesGAZ9>=O zc|R4GLZ>g{9nb%~Jg@55m`DYe_|3Sg12`7Er0e+D`a1YMVVn(}UYH1-Hkscl7wWw{ z9HQ)h`koQy`o-Lig-&-58IHibb%U>E@+MHz9~7;CHsc+rCOTZ{TzC$Rp27wxG3shX6yhWU0!LzznG zP?b8CvRSWtiD&fBV9m#{j(3mw_$X~7e2#U$2Qc-}F2{SU|GmJeKHBAY@6iX+Yu;oS5^IDxR9F%(xq%8dwoa??M&%u)T5`3ypu2+dK6}WF#ouVzbOk!#w=BZV#cp4tW;B?rhlc{H+@_{z#i>O7Xf7-_M1e6*)@t z*rFa;hvc&boLj*3n&PvV(~zPmGA>uW`&YnQfd5x{Mot!GX4tOY1H6PXUSHhXZFyF_ z`%hYAe&FtJ_+<$7+}hiv>XPxw9$)n88d7xy ze0ANc>-sA5=;8mKb#>yoRotoODL!5AM2A(K1zw#wRcE2E&d=#Oe_hx4Srv=d{eP^H ztLhz-`=mzdCIOr+jV4*!GlaJMOhTr`oRZwVl*$zu({1ING9|H;cAZ zJ5sKH-`UVIaegzdZ}81^p_coj1AMz&pr3TT~d7g-}|9ZF+*JD(n$B22OEAU^c*XM>r%IKH$T)_%@ZuIH(8CpXZfxGiNT!qtJ zDrX~cn$Ni(n`i1?t&i=hkHxEfeEMfzAKgZoyKGV8?9HG#&GH;EmAAWbOx~aC90xtl zf!5~hZ7~u#*EbwFHvoEj&wS)u_hJM*HFB0e4Q;W)nUFYTP#Aa0xUml#rnXzq#B>6UxnA7 zGI_v)cMD^6t^nQMJx~6Ca-^?|XnP4VI_UeJQNVYpNy=nk?NVm}Y(2SzD?rcp z4FgWX!g?nXwt&vDZ%E;5g8T>XFQUDLA?DhlK7_V(yW8f`mTq^?BHGgJ?nS%Zy4@tc z@6qk<8%G@@Y>(&5C0wEH@}X8~2Q%KyKJt15FtBZwVScbD7_%*mZxR=H4cT{ZHpp`T zmG0Vs>$7T(H~Z%J59AzUzTEn?G!JX-Zk~n1bpn3AZz<$>xtf|}>`W*KK(^IJD z2=pma#!?y7tLzZuw+iSzOWCj`u7+=23YJPAET39kQ%`@I@*dZc_wBk|1{{ko9Y))J zm|fiKHNEQy>K~W)NuCed?1Q1w>-#X@zdi4fa2{507Wm-2)(7YQtm^-EZ|$=V+7+bz z6Yo5Dr$6e5>FcQLGdGDXeP&#jeEv4PW@W67Dj3RqFho5VhS0{)dS0Vq`|Z3s+w-#a zq3q8~UemQqUNflp!-fGRtMBP&4v|&ecC*%PdG36;KkPua?fNILP2NL?=9!yXx8+!L z{bViA==w+Up#jy-M$)QTtwT?(wzEOE6JOP#yZ+j*L$A@(!=wdWKcp=T|36sQ-Vezq z&Z_n{Q_pqL9`%p$)%Ie#J)Y+frp|%yzNglJBY3akIJC}g%6>hk+j|!OwfKL=-|iA~ zJ2x`U0(`wu$|ChrmR0*QEj3?V9Ug4-iLrdY(ogqb?03sNYYM(v4c}(M$1@@DtvuU# zy1}7*V$!dl>T(o(Aqn3a{yz?QC>zfM7Q&&%9emrV`ngf}Gv=FzPyJi- zFfDngGAOzD|DJ5tE=X>Kqw&g~sqX^@;pjdB5yquj=E5)jpn_^ZGc({6>xP z9QsAg?{9_<(k##9R(Y`+c~8Die(!?6Q^y(uzo!fUe&0C>{yzuaPo7ME3teqt3OsU_ zx|-(su95+^jF9hxcaAlnKfr~#2Fmm&{rn$ud{Xj%$OiS`sXaVX5_%f>|7P<4v(hej z`Xc|)&I0QpU!EmjM!j>?z0fx6roAOcU9pb)IPASy_5(11UngD4CxB~_woA0LSg&Lf z(35?a>ZLrj6|(eRw)Kl_hjd!XKJ_bkZKX{PeI) z&#JNy@?18`0fU%dN8%!F;w$*K#W&ygdbUy8EVCx{JQvi)GPBxV%Ck!Oy`RtEJK762 zPAgfuO8G4O_A{aN|C4LkSt%cQ4=4H*L<=^(#t)jq2n-UI%o|xFChC#r!2vg!Gt^OZdJXRcuK@q(d_dwLbS2)?j=>nnM(Nw&9HurVQh_$w zV|!Jb&?f_jd*#~f{Liaxl5Ut^^!g}mt?Ju9k?~*Z+XCEwU4Q%A{%`5aI=ea^g}(79 zChz9i&soSNwDID8WjuH$@j{(vmr?!h*8OIDV8_~im;3ttVVM(M_gkNzR<*9*cM{eC z1v`BtcWBt( z-##3S)2A~DczB*1=ygEhniXOn(AFD#r}3@&jB10|S_e9D$&YVXw*!o?2Co=U@lGes z&`;02;9V;BB-%+kry}VY$dBCTH*l7|pOex~TtFK~K4f!#qwF_hF!D+!-i*07c?Ki# zdDvu}ByA?0Raunx=qu(gs^oo9T~GRIO1Z`4J$a~nj&iJPXk9z<8QSWG{7IRXFqv{s zqZJ}tX!}=tb=zk#4yR-cn~aJ22>vN=e>jJ+PKw}3!lZpWAJnmb{i%}~=EzJqk`7#X zh;mnplIO3_HZUKo^|rXG{EsK({?bWJ4-~FCEB;4?tKvDr=+PbAKcjH<#KV4EW%=&4 z?ZkcUe9hkuaf0};uAN8Mt_kri-OgA2?QlG@24s2kk3JfVag=*RQP-K_kS*cpQ!(hw zK?=F-L_2j9u5s^oU7Se-3O_$cmCmVcy`nbPOYvkkA zKK%y!;Ndv#KcoBfK7XGucl*HyYNfn{a>Gq_G3K&oG3eM|-);r_L^3uLw#?~}(+qj2 zc?!5s`Z5_wJ13jnV27ECU4o3B54*ebP1f#3JfFk2r*~PwBcV)eG-#V6L2KJcqqR+* z-`!-#&{iMMEB*F%J9x+tu{mKgu3-=Gb`Qpl_CWAan=$j9Pw%vXon|IBj+vvK=u(5b z7xLg-zR8ZFt?qU0Bu5$?p3i$3?eM&U{zrG&!9nI$G?Fo%wT8C#%{4gtW&r22JDs2t zN&@2vQHlE zpnSzVRGm6r>sk>w3f{P}JG3BO zXxEH)grI}PL^)|lPd(2Jbp&X@z@R)Q)fOrj=!#v7cvG`#OXzq-#|%nag3_H+6^+`K z;6Dd|ZFZY>K(=vG#sSNCkNmAJW$+JGXgQBIJIehEFFP)_ux+(Jw&*afTV&446U(bP z@I~klo)4+-D*0UpXcoTx4)<5~DBAb?hdbqYGzBv#mqVMmoysrDJuaSKg3mK}?x!E1 zai=*>Be%-DG%|i}K#z^|_pcqBO5fQ0p_C8x*sP%w>&9jp_X8-?A@_vQzst4W(Z#)~ zx{n2*yQVt3Qm)IN4~JIrp35Aij0w=PdM)|L40Ot+u#71nY&RVtoKH(z-3NN*Ifa%O zTnqb_ReI2Ii_8f-yzGIIbuwD;#d7h%w)jKAoysdqk{d$Z#|84xaPVOhuW3+~5 zuNx!cCHQ%HuderMuq4q>G-n|C$>Spc>S2nnS%zrVkT0iIT_rdRXd3vM&-6Zk8)BO=+tYpP zm3^nlpx{W5_s!fc ze3#<_M%?DsZXEs z?fL4}yqERL^XJSj-$%UejxZND_1EKaKai#|b=d|>T)LI^DLJm!;GeJ-5tgA_oq#?w zHQdj2jyi`MB+c4HSyIEx+~*!$ljU-Fo>S#wEXVVfQSR?Nm{I>XIDY*K=7^N7Pf9#G z$mfd*weGM!5-4T}nhtxx!mTT#&ZIVvNIHkK4FFHQQaRRT2dUG_Y*0s#L z4!%9*aKFU~i4P^TX;22lcYi=%k{7o`S~b-u^?A}llXdXlM`!;<@3*KNkhzW0Q>hbD zZoCzIc?vvwO45-N8Pbni_zZ3Q5VFOT#-$If$0eTo#rY$xU~G6V>+DLgpIfO5pdM?X zfwb%R3*@)`8uvMVv~%$tc;QY(@3s6X^~5!_N9u|6&m;rR5@DEVlzVnGy-q59DQvBU z4RuqFqb!Z~6KwyCmgxo}>MUf;(~lOU&)u1Bi9q+zc&z4QwXTE9Z!D7@dH3GGj%_dN z$Gd4w-*$<>Q@x=dx3iBOAsN$Nt!V&s%HuctX@H+r4&O$*roBP~a<^gLRJ^&Q0ZXei z0JOwWdbp1UEUnT2ygyE#?k3GEQhe`k3-23213qz9ud8F%*~Z9iuE&4hp=`6qH@zLK zqbz%3m0peAwwAW8gOxeNHhZx4(O$I{*4?zT5C#|PKO4+IuX3(PTvKh!{XrAAuk0^M z;D4p<$=l_=oMH*)-iN`gfYBhK+&}(wmT*1sHJm_ zua3|B?b4_Cb}&Bh@4z_l_Aoj>_Q4ol52L@GmAK*CWDLwMWoH#-TCb?qHohnO!yOk_ z_b51bsJQLApB1VzdZJ$WY-HPAhb3QgDwqRk3HQU1ZFjbWGJIA7y}R6JN4&GkXRCt@ z@Fe*Ey@TNWOLfkE^8bm*fxE^(?g*7XOho3PV?i(3KNa3~*Hn{?w+ev<|57e|V88rl zp59&Qxiio$p!Z)~K-qcbf!~$>7qoxvaJbv%bIjvkK!2IRv#l+1-)wqR<>+^|PzPpS z+#YqmF&lAi>ItQyeW6UWH!P}8Nt!Ngn>=48n`uhFHWx|1=Gg{^sY6FzI-d+2`|F&_ zX^}e=;aLODO)ZgRK%Loj>@Rq}z$LsJz&oCEcqW{wl{#cNxoJ2&^#zpqbH=jHFz+17 zuzX)Awc%7)6t;kd;r)xO6TBeTjrX9{*~91y^sG4axiSZIu*DQ*D0e!?9HJ<91m$@4 zM_W*oEHcl$kqL0m^I1a#2=mf)8SrN3tK1W*by@WBrOf(1W+N|Upj+-o*)L;$5BSQy ze3h~<9~)A8ZM5C25#x~h?OfeTo&gO% z#(myZx_=RsAIS>zOWq=C!s+EjNt;iq`grZH58t2nzL)vN60*)eV!4)ZD$4uR$)8N& z+u|O^LUyH?^H1t>bKntkJJsH3X(PqE?a-_EoO+elM!S(JNSzSe`&pIQo-8~R6NQ^M zKJi3*ofT*e{^sv+e^cr+qVO>+#>cOBj7P7xu4zqV3b;qP%}5qLy4?-5Bt$`*VeKB- zA^TmpH@!U1@710QQB1$bm|8eeo~(k1>eKBhazIrcW<<= zIlb2oL1#IRHDwGoWHzEqkn|JJp5imV55vPdZ?6Y%;Qc6bgSN>TJj>2sE`OWUCw3C& z^4Cef+73hE*G6yu2(KZxT#veTpswrB8nl5P`>@Qj*=U)HuOF+Y{bdA8#X5^aL;{~wT`L>Jo{Lwzn)VG&tG=qn_Xdx zydtJzpN?I}vvv4Qra4oEd*->T?N;@~lYyg`{q>wlh`6rja&Oqm${aJ&MsbXGYv#v` zXLe?=u8z*~yB<|fHSVXq@uWR_Fd?5g^4t#4c>1qv$WQTH*Z)R;c5&UkqD0;^++`@Wf!`w|Y7v$ugc@%>42?#%P)JVwz{6Xu2^IW-RR8_jiVV z=Ps%9gzaJ{#QX$Kv?u5WI>OFfz?1)acvZLisaz|!$+Mt$GLP}0upP+VW(SBbqlKyJ z)Hf}YGB)tJ=JD$+hg*(UvD^ie$tI>5S)CfwcJyVn{_7Cy1v0qp<}NBPvBS+XvcV;w`c*n!z-vO4vM zE9;=GV*H{+qu@06S`=}M**-EoTt97)o4xX2Y z`upna-D7~GEtn}HZ32y|$+GN23J#VV`?$=7x}!qo%CdLPeq5f7w4HH7hvc3Od#AMV z<9~?n9D6(QOXokhgSw+Gvw=Aeravz8>I!BmA8mF6UFhSq z91lHCD91Qq*2CZIt*EagQ|;A7d^@(&GN|+PHMqNHZ?#2tFcW`tC-g|vHC7_e=~Z>@ zl(`dvW4EGj_<3WAdSbo!p7{CbPTQbPdsM>Z3g(i39{2>Aq-?lowT~<(ZDbffey3w~ z%v5Kpuv+GU=6;7%;U2liCskP?--+TleN4FLJI3$xSp{=VLpKhm#CDa>ImNtH^86(I zT|6wmlXX@qo2%Tv{tkRsg*t21ccQov<(RLHXCD)nbiHPq+S_A}f@ktQ|Dnt5pse0s zpQ)G(J7#Bnsu0pj<&k<(#F(g+{ql{eqAB0~!R0G0q=!=ePA`}H?eriIi$YYl{{QzY zy9K{{gs7SjB6eOqE6U<`S%~OUc-OwRe01Thbrjw!M8U`L?_k97U-3HX+lPDnm&WkR zy?y&dXuk;Um)|Kw@Im}s_1wHmJ?C{nCt%xy-vPYehF?^Ft6?j&)PIoYj?Cz9UK4aV zh)6x!@BYqDUd+rxXTUltI}%g!N0SJ&Lyvf%Cz5_@rp~#)%N(zl`J3yU)EQIC4)N*m z0p^*L`cXdom2TP^rt6#o9U;5;aOmK|c%5@^Yv|x&Tj=2Be4X=!Q;}B=bVSm7r|KMg zq|Ui(xX!sJSLfV^ZyrS1hw;2+5^`}~>cTQV@6GscAnocgrT=;pIBa>jLN;=5d^UXG zetwq>d}r4%;ZVA01>Y^9tc;iDa}}#yBx7U32T~|s=PMs(d7Uf8WO?56zg@?El;6mB zhOK+sRQ`Zs(1Zr`^;c_B<_z;5PaCPCuf3X-xuj=;&OK}=mNKWZL8k@x_v!lyeSep} zcX_Y#OO(11D>i!jN`AD0!;!(%IG(kD{vKR@vxdC5N1bb3!0%bU6=itcVsb6M`60?! zEHfzAxcQo|{*r9OD$d>Ros}%2te?;DUBFj&RE`mzdv)Xe&UN*kSzqsntk+#v@8y5; z*UR!=z3h)yr>-ZmbgLt>x2t@9@6vtbGrZqTyMeq9IufQO?)gx#e2cL3LFcV-2aY@u2g-Ol0sLy+`WPRrQDe(@13S-lK-|=vZX%zQcwaPJJd>b{v!3 zVI*Tu?6ZyI*W1^$)QQ-$kbm16lF`;gvIro79@>R%rYK2$CR6rplz;Ym_nLMi6Mggs z%Sd%3dG=N~b>j2C+ta`^YzFT^pKqZ24mo`9kYT0fFnZp&| zY~33FqaPnNw_cO_Y*N>2g;=(uAzA!rvu(5_lI4#97RO8$9&1KhCz55{!$G~Z9N)GY z^4mi8;n+Saa-84RWn#=bb*fI3gFgjZ%wz%TVE#q&8dK*1GFuZr{xahQ_`eln)0RjT z95Jm&(Z>?jchtzlp1r{}o7WFH@A?&CzJ_}C6RcnY%OiJh{}a@4nf z?HUUHSi-HwZYRf$9DqkQ6BM)-N!g~!*bm0-LxaHzPA~-D#AJ)vEsV`_uZ;DX@xAxi=K>s(69NGe(rgd6G*>Ut#2D*wYUi`os?&B_r?u1Vr8aF7 z?U@+C3+-C5EZvT2qI#dQbaUzn%dTx>C7+;lQPtg*&<)c$53P_jYtytzrS~_ zea_~DMCbp1ojhe0PhD&-YjI&-Z3E^-fVtXl&4+)v zcxenUuXSNYTLRy{pLy`T80`;UZMrrNdBxNh(&9RB6bn7Y{n^R>()-#Y`jR+5{+}M4 zC*gPTUdMQkE%+p3cwMwh_s-)VrQv;N8tn>s){9HKLR9aKIcQ=iMH7z?r?tB^tzF$i z%iVT$s@FJ2ySk^{p0swqme#H^igx$SqTveFi_g)n;%WDdw018=yM*7OhjGF7UkRxqTxJ>}_-OUEt~axe5^n*X=uscKZUx+0w2d)aSD|!(WQDPtx%l z{5k65zlzRW^oKoC87Us7bGeB2$(#K?+a%g=QJdLl^GIOx!*i5tLpi1~qO2y%?wX_Q zi?hpWAGrGze1#J*mLCZih z+4rO9o8tkCzWdNOaEUrZzco96cS&PiOs)B8oXQBCYyZsnBz^$pu&3$*kh_~(sN8-} zxwn}AV1JHwnC>P4%uu40?R(YNoX> zpl*gdZ-P&vZZr{kit5%ztpzX8dDEiDBGd-XWBBXTZFwHo6rZ&fIv@B1ZmNo7kvQRo za1sJ6;5X`t-*}2}Qd<(sBs?b1W88a3Qs;5e?DP0|h37oZ!aP<}ew_XE*!N>TiQbRY zaC~UYqu{^5JEiEu{w>>QrkmaKTbu{lTFf`f#0jUAU+3ndj@a*7ndhu4ntj$C-{Lvz z7%spwdySoVE49xBTw`=Dq~Q7k`h74Bt_<|)c+2VKD0i=0j>;$~6H|`-zB{nBSDfuQ zho);;j>f*VewT;5h^78nmhHxGD)VE!I{{y~zo0C9$kBZ(K1gSAEx$SQnSyw;i#HM< zgZs|lD#175E(E(yew&65qOO@gqaL;Yp$iN3*(dik@Bf!*Usnc{ydKTICZ;~^+5al< z{~o#jpIl*TRRJZ`qdCt~InVxAdH*90os`k#61@$3&XWj!>(FB_HW9}*DE7M%mT#LH zjX7JK)gMlJXg>FgdKI!Ba9-i5NBGRH6tp9Qa98N%E5sU6pOdsMB<=^(5tMPR5V$4! zO8kzx2jyvfSVvad>;naL1~8s_hv9B1c9Q+KaR2-+ioWK{{udGKAENESWZU4SRK7>j zxnuQ-w(pTNukuuycfy!W^VC~BXT&@@A4=%IPulPy_Df0c6^ABtM&{#IouA>y&KYW-%=`bJ{W(|iWdJ;j#@@1b)8^n~tC zkvaPR+!^}6eKwz@d?3%vf+e8GK66jA-wqHTn#E_7KNfj``g)#t(Rhh6e-GW$s-tvg zq`OiJ-5IHDCeu)=h6$fm(duXq_d?usw{Yl%Gc68kNbQN03ZF89M{ZZ)5| zi7>`i&u1>(uS+l%L#rrJ!qC0N`Ch+*&iDGn0*nnlEemnS^Ko6i)1HNm4Yl7(o!h1zY zEb=np26xx$(pad*P{OsEmEGcVf^<*iHMfWEskYzBtlwmaeNht2@W^cBzL?s6`h79g zlD03-@to;lm(LJBc|ZIipXqfhdk%CHof`GoyCB08^0#e6Y(F7%vBa4lFotK-nCahm z&isgb=I6<~Aoc-ZYo@cGa57)cyZ>eELz*Lk*P1OSQ2c-way^3OPKLdXeP`uL|Kba6 zI*V}z%X1rk9_Bo^p=X`%BX|SA)+U4J49$_Gr117gL|P9l9RF z`nIMD#;Z~Y|Eq(pIekI*fyq-VrRm zvq9LbEd?*z7%?J8%WU}a&KlQWX~H{p6OD0Lqy>=1aUdc_Y=qMA8{>oi+Zc^)l=?8k4SsoLc6sTy&8s?L7H z-n;uuZ`jjUvE2jS-PmuA`=$+@dFW;jmKhxF-6=Cdi83Q;k66BJW`@SQY@`gf!SBrs zQ9fci413B@->@+$?4~^Sm8I_e9^SyQ2juUYS&wQT>r({S9+2Ae_9M$dR<*W`-_G~` zko5+mhB_hM&oS>`K|X!nDr}}_`)B>1z0>c#H1$ru_qy5d^m{kXey87i!6$pC-}}|s z@AP|@&wi)hTk^@?>GxhX`<;I8qS^2CdviY7JN@2sXTQ_$)n~uc?^RBHr>|=N5| zrq5DY<{m1uAx?0oY;bGNqqF_|N^z!@$k<-dTDDKHFOMmiZ&$#Uh2RNT$|b@FxP5tr zZicGq+{f4n=A3x&%?(F_Z*J)cz8M<{n#(Jrj=Ccn%WN^evt_j03?0n7L76BwA?qpa z2)=n4^-JrvHRqL4v6>;J}{Tm<%dQ+8f2&$YgnJ z$+*N5_U-nWkNySgvq`+;R$%^8@3=X;6eaJP|Ns7Th7?7=R#74$MF}{H;;T;O1*ho$ z%Gu>Jm!H~3Cf9KW^72Mg$O?x z!{U3^Ch-}5L-tvjDmULGSSG3eDcFTzf5zpWTu6JeLNjk_)c9--O$6=hCW?u75Po5^ z!H35b{~sW8KwL)RyEtZwuxED+>v8i|TKm34xoJ4`KSq0MRDb_|$)9B%B;I8>J5gxu zHj+AfR7PccDk?+!dK&pH@bS%c^mq7dq%|@UcKKTUca(?s-7iW$m-P~kWXB4vN1Y_y z=*9lgY_*5RH+pskwL1GmIZWl-0#;6~5?e4p{R0m?p01hS;&TW%*u`cDoze;)uZ6HxXMd%@((iz-QJ*iCL3~Gs z@IyFk$JD28>j516j;%irIERQfOCQ*g9(}l>7jb~Zn=kB&3V>6@1wh;k!E1kX7if;8 zGkF*%>Qx52{*3Y{hd9f9nWj3HX=?pzyZ+p_w(A(`j;-zbU}PTR7TcFQM9)Sjo#^G~ z-S)b9{@Cy6-R%1eII;9|1@2O7s1Ix7F(bK#`l(*64{^PjwIjMdTXG@{8e+%_{uD4&MrlpNZw#ZaY$w?l%Ed+d@5GeAFL8epF-m;w3mCCF==ZX9mXCb__W&=Cnjwjo za3A8t*DEew!sCROwt%5ddhjwpb!rwmp?-mvcsgDV16B_Y1o~H{o9Yq9OKKgW9B|?8 zk6wNFS>Ok_BD_4}!OIU$hnFGr1zO~xn@vPFhtufh&}_Us;K5712QOj53-5pMC(xOb zcnOUmHqO4}dI?PtUJeEkdnJXJKB`l((9nAXUas)qg<&1w{h3-XptE&~sSX0xPzo;t zvtj)bV67!Q5Ujla=`N5@aNdRQM}pAL178VwrEe8%w5>Y8>H9RkI|OGV-L;Q;;Pk@O z%WF7=zY$(nrd(Gkn0jZ!#JVi-y-;HLzI;H?W8m%@#$_qw48Wh0+;2VDZ*{Tcew%Au zVUJcXG$VbCKW#c4fBlTV)Vcy~sHJm+>073egtdP*tQy{89c zus&?!OwDR4q4@|nMTkuaxii69G#70^I^lkKLylt&33&fG1+VrGv+0BOYj@99(4Or{ z+p{P~_1{b%Z#UOZ(enXH+d*@EnCW?{e)p{L`hShNY2x*wjf%N3E?Q@4y#GPdtX-xi z=S3fa50VDUofmzs^}@V*o~iYUaaN}9_jKBXJ5MX!dB%8NX49s${oa(??TRe#T$h7SG2$AJ8-96h3|9Ggpb?*O^Ss5H2c3UVq8pf`d66KA^rW~CXQiF z_+AWIwv*P>dfip`hP+%)7Di>YF(Z9 zz|+^zseP&cIeT2{?>}x_5lj8I^u0R9dmsfX!-Lq6ya!USj?LPu`tLn^Rh4`7{B@T4 z5$om$&0MPF2}%(+J5cdFbZsb3%tqB_hXO zE5{z7u|MNEBVuwd6~Ir3JR`7|3g+7Ty?j2{F>yYqfBA9zz%bSf^!phn#%cHg{VLBK z-6`R`k>I>d!dYP1+c8Ht|LHqmRLk&vuKj){e)e>G;57W~a>37@SmK$Z(COyre{xrG z$G$T6-gjyI^PqcB>A!v%kM-+HChV^2FE;!b_r8tBGWc|CDv9NYvC|n&W1nlkApM!u zhE`P^%YAx<AsNbxi91nW4`^f=Nq!4x?I~B6f&%T zNT2UP-jn9X-WLXE&9{$r*(5(|FpolKz!=~W{3v*o+`0B2(!rxtSV=rpZyHa<<*59*mhwBnAJZ96eBzimL!bD#yV05C8GX1D)*J4f@KW3fYuvkN zy@@;FHMkQt(*5##Og|E#elGLR zx#&;qkr!B|nv(q-zW|?uELVc;=lHp&$d#0T)=}TZ%Q3=LN5E01X3;XCFF2X>$7Cqd zU#y>KUy)Z<3tb)f-NGBmQA(c-JIeSxtI&F!X;K#IL5979Xa@N0$*`dgA)n4v!sT(~ zp^V0F;O_gM!8V97MSZeT+TXdpKwVoO0jg8WtNhSc(&B;XCQlNjYO5E z;GxZsdslGZ@qX9mlk0PV(!RnztTZLpxpF(=&_NetvCM=2&)jCp8(O`6hJJrOF5fn^ zu9^R0-!F;+dq%ul;4P?Nh|Zo0`4(HvXU_DGYNY=Hs)HCexshc1mDwE;!#@?}J(?$M z>Eo>)|1CjT&euleCPld{QEtyi?GYn*Or!;5+K2e8CHxLVxvd6nYd`B~&7-+hQ|~5w z#)LmsLpvNb6i+(*hpMB|**;*Od#~#n_@fqY(J7tJ(b7a-Q?Tm|!nbiWz;UKI{b;F@ zGa2kkPa@25I&=oJjkp$js27Ed0qN3XhRx}V-wz$ zM}u7*v^OpyTBjdyZB82P{3+_c6~4~*Idqp)H0ggEJ}RNV8(Oxaxw*zS_>%Rv7VEN9 z1+4H>pRt$i+34ta<9TwqsdYvb_0_eeudU2l0=)o!+nqiBYFdxKfF22ANyXVudmQhD z1=E^Q)D|>VnxCSi-vs(z$$nHXndv25(!WmsA^H#ZM~w*m=hA-x{WjQNYSdVcw^b)# z6Ys_`@h+YY*vpU6zx6o#dCPugm7!G^$0BqF#4Pd7LV@VvO|l74wo6Z zs6%+!U_EgIVq6$f4>$7_s@qbUh`_&Gldk0LC*Go=*nxyNvjl8sEFi zpc?~Ry>^k|-@D0JwxgW-S`J$kON9yA9ES7CvhPkd#%$s^-9hBo3 zvXtK&utP@zb~vtCS>2Q$Q#6ik-xshWxSK#f7(Ryxr@0cRS^d-o@E2!21>aZQ__-pE zqP;vxn;&DDOLpzDvu?3$!~;|cD$GmZGp>;8`KwM}Pp7o-P{7uq`ylOURx?jUX^{WI z)`>o0Q@VT-zP{-@^A`<#AI`&?h5tI_jnMaeTECSVt>16bT7@mXKNfm@gXw$iVslx0 zd93JXYaGILYzg67YbuQ`YV;f7qh;Ji1Z|v0^;-isyhL-F|1#BY)|Ey3FE)KILf@$* zk-HCi%O%!=XI45|b%~PQM|Bx4afbNX%ZM+hH20j4epcqwcwAkNN3DjgnU3ID4>w9Z z55(uBb+CLGbGF;y^}A=44O^$2DZ)SeIM(Tw`symIlRs=}2`c%cV(nl(lv}%RVB2!& zepNyD>zgswb9!>4?cYP=?uaTGJ8A8|NNv^`u_9{6S4%YK^_7mVHK;Hy8gy&vGn8)= zPO5#eNL6w9mLp}nZk9La*v5#v_NXt(zw+Aa$J(nGYtQzXH#rh6ltUT%G-z*yXl&t5 zUm|xpm2bHIy0JcKJ!Vz#dQo5Prm>7-UGD4Rb=k~(GOf#fxU(wrrg&YNa$RZ%JnJ%u zJX%X7?Yc?xV5fMBCk(97+#O4=#~OvMK|uqpQF$IwzuGrE>ok}sGm3hs9lrZ}+L;nK z4^VrNcG1=nw1eO5pXv!CMB|CjIQ|pknc{sY-WlmLMtNb%`wLGV_{cynVmk*68jm`N zJp8VTLU-SJxWH20wCe0fbEHl{Ux4oH^@c+9`?U#z5%AK!UEUusp<}#&(tn0@q*=QR z;lFv85u2vI2T*2zY(BMh&TBN^gZlfG4dqJC7`6H8DqC+3Bo<&j3`3uBe=L{gwVd?{ zs6OU1zRS=L2h0M*U$z<&*ssgjzsoMR7Y~Ae>0zJz{8q~`k0ejSdA-=z;{9!bn+N!b z4k<@CPtagVn_QcrER^dq=a%JhOgol>0L_VDZT2qOVS4*^Ffc7@vLi_>r zv!3Y%(VMSZf?jBrpcfnMWi>=Eo?mIwIh26E5UnC=W%bDVa$LTSVndyxv>~3WIs-QE zbzwV5{3&!{KMg)L2YY;%4IQmg8HYXy_z$BUVP6m0$z$q=Aqxd6IU_)Y6c zCt6PUjb*}bG4hZOJ$=-rH3eO4SJxG`jdUiO*xw3lEEnjmh(g~rOv5d6=MmYF)yXO4p+#`*%EO^Gtom?Yk2l0IFU>3+^Nzr^doSKhqJ zILGYBMw~m`yDFfQc7>hPZQdbt*Wl|0{P!Bfx0ByBe21U)9a6U~Pf;JP)aoazHEVva z#(q1px_xW!KaxpzLg;j5CbHSL1kTsEk|BKF@H_k>@Hkabx}#C~ekxy0^r9y#7MA`q z=F$1D#fjel-1J>VyqsQx?zUPiyDI9a@nZ9Ax`#}nt{X$#6H7b}A2>2r0(6xgZt>S& z*(r3Diel>STcJA^*Njkng%NzV*b2qz&Ls2!c0+fou#$K$oBn%(n>#2C@h|hFpSS#j zG=|aO<~IcYFMRG1{rQdSR~~+@tVU}AefptaRR`TSqL=ty$+}~^`*G($d(Z);ar}2T z$06R%ah-{0RSwEn#qdMa=vNjTElc_%E9}=0%U;P|l)(8ZqM+D%Wcur++2(3FghKx`@P%c9jK6`!YeErm3bxnO{|`WYZa1kklvC%C|fN-%44guR^1>3A^Vy1vE6` zgU+`CopdFPvm531(D_{%jb-m7xT=j-MD(zkF8$9qc!~^f7{)zWicSLW#)Vem7MSL)i>1l!q?E){AnvzBB_+Upsd&0NF z2fHpy)kg%;+)Q8#w@7>)jeOgifKLr1Cl>V(omg8iM zmzhYv4SJZvlzyO02_cPmSM_L_nM-+)7c7h~KI@iA|F%lvNkZ+!lk6m3x5FS_cden1 z`K`s&9`1SJPL64^t+F>@Evle&YA=)Up(8$ph_k0;uIrjPfpqF8yq54VU1mmF{LUWe zECRmifLU}vQkC-O%q6y6PeE+s?&(hTysnx>G2R^va-t^Q@>ZD9$uG^8$!hKx2gNCiG5@ z_i1!qJk0vgp&Fv$14J9F`b0M5O#Nkss|P!S?=R7w8>P1GJUil)Im?HGN*;JC;)9AB z=$uCzbwmTlU=O=50YCYEy1RvwvEu3bB-KB-$PP_VeXkFxW2~3WI&7a}nJdo6N1Yh$ z?v`e#AP-#BXs-X!H+T@+#tEDz!wI_!#gFKH{^N zS43$~>@qFLuZg!Q8X|mH4T!0s==kl9A9owH-I!-sN2yQn_L}tTL;byn{#Mf1hF`b=0n!MbFJy4{g*{|oXmD3w)9|GqNp_x zi!}S4AlqNnu@9smbmT{ImnkK9ciRl_2*Ec7c=sg`>qj5)z)QTx@&k)Zi+B(3TvcP= z_RoVaa-q9V`}gl?|8{`yI3V}%SYYk_;91-JjyjMPTP)v(fW7{n^=9`p6Bj^7u!;GDC(i5UxSh-cvi|+SKx~1nD@)<88Dm6UDz_AQjiS!tZs<@qBv2>h zjt4d%o-zF^>W$1x+W%x70H2Xf zw$I#q5^^HQ2jO!aFwoe0g*@*G_?r%lL{t7wx6d5^9_xh%yAD*aZuz5#|4~9b(Sd5J zH(K5`#j*;*+4h;~r>dkJ7dAWSI945d3^97 zm6?dn@_l|yT(k+FziL9hyPg zcz4r5vGx{Er|eI1+t~)iWE+&Dekb?GZzWtClxl%f=*vIeSt)g=!4tG-DY<7lUn%_| zLrz}gk&~m17g<&;+lVK9BXfRXr8w9AC2dUAt?~@Kh{i$Z&YdmNo@d1W%KgLHH-sAh zT3H;|omnt6NEp0+ZR3I`U0BI>5|3%rPZ8FBVwDxDEVET%$MN`1-1S`;z4c#(-FgFj zxQnB@lW%EZ_}V=> z&z`q$o#Usw9B4gkR*2u;`VX*MXc977{a~31Ki>*Iq3=xR^@S_Tf%>UJM1d>Cgolq%kfY$mtYG)+4ZI`#5VfZu^^A&DHOxt

Yd%$h%a@x28^n_S~iTux5q`wrKm|YUYc;{i_rnYCbB0D|f2;*7*Fbnj3uSPm91e zMk@PS^EKb~Z-`)ai_*`UJB9tHm1;avvkm^}T}u8nj|rRhm>cX5)g1Db_jB;kJk{Sd z|0(QQgOq$~-VnjoQZ=5dH6V|*Nr4%w zwZ8Sx+7F1p-!=O<;Cx|sFIV^t`0QELN)akMuKKSwF6?=Wm3(S5!dw_r`dI7pr)s|> zg0o28tk1Py7s1cXRsMeMox*%(x_18-_+OfR4*KRBY9IEcpYo-B>v^?574~iG)Oe-# zs0jS-xEjx!>)rjIeEpB^{#R!{u=bzAe9>0^Xx%^&_?EVwQ8%*id3CiSIF9@y*1x)m zuxIP&H~5@BUj**CNcDf+OcDIpOf_Fyw?KrRT&VORRO~As{@E+{YW3+6#ozlC>t`9# zD}*WMFWu|6340UGN3%Vx`?j#>3{v*F&NqKl_XzmsBGun@F9`D@ddC6#4|V_P%m1nf z>~2>2QTI>a`36=0`avReaJlN=df#}VzD}6qX}=M#U)B5kk$TvVXN$D^edCdO_^)5m z=CkU%;9nh4?KcJp>o<$F>z@+lqldNfz9a%iSE~KI^^jLvUd?CKe-HT3)|2b+5k==M zQtLPM4`RH%T~BiZ$7F1fGAFq{Xgp1hx)_5>%W0LAp0@R;n(`#A)V3E zuM7Kw^s!2=n>HYW&gg{=(-sd{Efm zT&(z`Aui0;Aai$-BX~e&6s}5m>NW+4}~_w{@HvZ#8@!{iW@9X}D8_Iy%*Q zV#9;Ne0sX#hlV}EdTpiR+lH5X&-=9qec%nH-wm$|^X%Qq{xyO^CTsp*<8a@2$hRM{ zaTM^6J{ipQX&fhlCp3S%@jMaStgV+dUM%e2)~Nn&Tmb!ErP|;4QDLtcr~I|Xgs}f| zLc71mw?3Zt)yFr#+4u#F-={17Z}i!(#yf=hp%u#CZ~T!6F0$45zj3z+Z9hi)>N)M> z%SIm_8-FQ+LH!v@uG5ntbDprsqZQ^}Wg;uiGcg3)d+=ZTb!D!#E|6CfN5m;N<|1 zH=6$DE3a1szN`6<=L{3Uk3XjTfpdK0uX7qj@$ynN-mP5iyZ&BbKXX{C|7U&s$L|yN zHA$`fYtVje{^*=`_^UUm_MCH_u>bsuvRCJPTG;ZZYpkE=d=dV>Wy*Ew&(|2j(VpK{XU%0=-0t9j+_5|PhYq4*>aKZ;g zVB5>8eiLH8>r2o-+WhQ<9ueAom+FrRt3+`0DmDI};M*@ZVFSiDF~wgKzz1`ttNHW^ z4`aNxT#Yv-{8R)6F3{xhTVHvviD2zKwZ1!{R|E&e)c(JTBSheN`i&{qcj8!#f3^AE ziLLaL8ns_zBJAnG?TT+E+*bI!i60VX%Q(ef6XBmcHb&|1#2bD2!B-caQ1Y7ib=UuP z{QIiOzWm=8!C&rF^N|zphdy>HeVn*k*cTmC`Ze)I5n8ZZ>DNS`d?vmM|4SSHP5c{7 znKu8~>|4)iE)l`^tWf=bmT!M`^Jo!h+(Pg1;``4Lfj`gG%4>1gr=9jSUm)!FbgKSt zo+HeWo7DVW^EJ?ajh~yr|3BHFe(y2Zw?5Xq4E=pj@!zPZDE|8*dX=~1|2E$W6SGk9 zb@R7HQ7i37X8ANfAdG7_DE?}GT-ZN5rsUK7EAVNJmOdejW!iXYQZfAX#i~Ch4TrvK z^VgF`iQv}`D}9^PSXlo_lZ1Uet>@Z&{X*aM*&=k+V@jVVK_Bnd{DVnh5e#Yao<#bn z@%tpm=ftZDkCQ$p%u$1seogZ2kC^lw5xjAWlGmgkiK6LAEyFU+n4^r1#V6WGlQ0v1j zw+Qpo^lnyO4{f;}`np!(ujM-;H25a<`+$~hA{bt)@YM3S2&HI^a66}e0e@PA%U>{lB>$G}{p6sqpQ=#v;gfy8w{3#{oH(JzKa)p^&?9Tr{Kn)7 z!d`Gx*{jLmgP%@U`Zal;Fkf1v#=nyn7nVP{!<}z)_++wgzx?D+2=gPW6~9crNd*2l zUH$%G@;7|>zbyiHR49F!e2?$?7We~4)p|_DMBnwNgn7eS<$q3o3H(R<71)26{5uhB znW_AN$$u}rzty)tc4Ai8e|ohBCE3sy@AuA4 z`@w(O{B7$k!s?x-@Y?z4e zK3AL1oZ?%5DZ3x`s!WX+rraTd>&Ga4o8tSu$CPct+}W)B%_+X|$CLxWhlYnKzVXhK z*F~^trkbCha$E!+yj9_EYET4DXus#5I#Pt5cv<0h>Ud#(;x08GH`TX4Z7TeyN7t$O zmZ>pe-myR{zZ-bc>NoWh!uq1N{#tjoue{HTP;89yC#L%RwW)UqBRN;$YwA5BaG+J$ z@2L+#9-2Qib)WD47e(O1^bQV|$JAel;_Mr0d@%K|h564NC_>}{8mvF(){0=1r-X9=lb~YT=++Sn&$b(;czOK47Yd0^Et6RmJP?^ zxh3(QNVa3L$aS@c!}2T}Wpl*LBCkk?wq_XwTquzFpukUAYdfV>Fq{hojkeBp(-eTt3p>jfaY4 zIvPn*n+4sPN~hv(CMuPl!VjS`WVsMoKHDS0vF=PbzC0eqb$Sw&k#3JgdPI99pNBw1 zS0>z*PcO&QmPV<`+4yyME(%FUouyK|l4j%-?XPev9g8~{+~GM0K!-$)*vl<5MF2q@@i zfI1Z;L7)Rsn+}3_JSr3Pq^0RZOrY0WM0>QeD;*Q)S5!Q_EFM`Rap(30w}vF;MCXO` zkv0NJJhjw0@3pxb>J&+O`o-N?s8$OAt*oQH@stDrpc~GlvsCL$+^JoAOveDUJlqB( zEfF{iIN{leOfDV;`10wTUjF=eBnvr6C__f^NUA#{tJAe4mdFZHn`~s6(wuyjNC7G?IyH8tim(*vlp_MYBDbyu(^D-Ih)# z`3arrT)ssy2+&UIlIQ2eNW0QKPJ-l*0$n7ME=FCZ0`k$5tm>q%@#P70Lo7{AlmN!v z^sKfX2`FkGm^BtK0N9koLDvb0*mK@H? z$Af@9k$aK^dJ@@ms*B2WvDTIbf(W;nbfV8kT^`Ay*{&II=s1~+$CrrqI4J<}0hC;- zQdgb?f+m5mv(cq)oAErZ7Bwr|krUVD06y?TS2Uk=xdwp9I&_1FN0&g$<6Y@gSb~sB z$GsUqFB|VjP>s-HA2uV&j@-!%3X(1|(f}m7U*dxLPSS~#ILR9_6u>RILV}pB1=y&4 zSr$e`RyG!wfXbok66usI3H5iaB5Dw0eC84z?TI9$MS`XFqsR>S#kHEm`QWN9qK@3M z1jHFGfC;3QiR5z2VlAYP9R>D}s25b-o~8%J^QbeOZj+b_r_#CXQgQjrDVL=Z5_)Va zJf4t-qX5dXdX&ZCmlTi*9f7o9OsSA=^iE9bKsRWN*t|3AGMHp9N4!)u#{y9{7kMyU z-Ds&4RX1=pX=>QD$GC**LU@k6(F_+(WS{U%bl_wS#M0y-(G^Z6+OmX0B^z*r zBYgs926k3j#z-C=m5Fpvzsg+sj7vAv2{9=O0`?92_MD}5@ zd#=*~O?QfHtza}tb6%*9mq)TouFg0@l2`+N^3ja$G10S$FT)vda9bizZKbk7C+LtA z**PM;&dmR6`g(@Tft6;)8k9x1Y)R33>B6NzBDRyl5iAV_03!o=iGE8HV^I)gz2h3 zOWqMI$+R2ZSd=QkZW0&b7*8MDDyPxQNA+wWFE}cj37;bs??~qpghNR%h3e;n&(#@F zb^L1CBThcj-K78mJc=&#tfVEd2M%x#k*BL0E|_P5Qy9m6n4e9nDkoGHC#`E7t?bv9nJAa=@8IN2j|)dp@4zK66J+DRNj;MU=jf_#bV<3f5*@q&VhV~HS0M%iWIY|Qae*=Th;#@wk;n7u=JF%pf& zGkK@PjBHt~gYB?XdbeXH5gr_~F9E@)TinQGN8iCfpnKAGjlj^B4p=?T*~+6SbiY^3 z6ar=BTF?%knCeE(btBURxUUlh#$dJD(^<#+ajG9DCq0wwkwDkL1ev&Fs;C@*XO+Fq zk|Fka!7YveST72AufY2VgO{S|F0z`w5+;jI@IEQBbOxukdSt->0e5zHNRygV8rI#_ z7T3Eu;&iin>r(DMIqZ|e_*|Gr6L7-v)K_wtodcz~-fep{l}{GbjvWSReaZGR)3`U# zvzDiFQwT0DLwmlFqbEH2lg1Y!YRP4m#q`mn0}la*J&}w#L+un;NIIZ2lBH3Uv^pdf z+=Na`s+o_R<7rC7OMh8Uqwi!bvqNkVff z9ri3}o~eLjAem2^3pwf`l9EiqhJgvNC*#_2(juCqNOdQZeyw+S4#q5=acnOJ-8x%e z1)pMRe3q187upCuz%$w!UEwFvxyrPhe~pj<(ZmQg=pYQXH2-*CIYgJ=2}-hy$c@et-;MHr-A`gaU6! z0?zfVropu$jFP2ys7bOq5ws6rBAvxRA>2tME;}s3rk7;-RzvTY9TK1}F`lH!y56?5 zX=IWdYv1;^%i2xc)ER_`|XIjqMaC@NWla)5gxtyFczV`s84f5Fb=V&^?=`qi% zCSXU2AxOhyYjbarS;2Io>-c7*iiEooDR#~1L|6_QWe;}A;b=IUTN z6_rC&nq-5+Lhc0s=hgr;gic}`K~s3C4w|QGOD+LU+zBX{RLDAtKJr1LJ;t*f=s9$+ zqa>mm6_W`$E^@|A(0VzzSQbgRBWuTR&8E}&0-7WW@H^O(oq>&1BzIm;j+>}5?kLtN zLejW{sX}^mwL$Zloouoz$#EnHqFp+3y0<53Si#j{Uf0HYEY0(VY}7%`c{%GrwkWRr zQc{;ln;h?VwRJ?}KSG~ePmwWz3&OymqUyHnDsax6(K-zLony9po* zno^?CH#s6s$1Ejhio9B~o{k0Y>~ZJ5WcwWO+Y_p<02Qn;ynI>P5AD#=HK8Z9M>l6y%|q*-istP3x<_|k0I3AMBof$^LKKw+j< z$!%eefe^qlb08>-{|in=Mc*zqj$Y(q1Vj`lvJ#1+g$vb26c?L%41^XV?WK$bk& zq1J+Q6DM^?x;I4ap3{LENM>?m#r8rraPZ;apg?Pp)OrH-I06C@|W}w z(%odiB-3?!#tqG4Ctp6nnZctT^#-IQPR9a!v(vJ;ZnRrgJCn%p*sj?f!8Kz9$C2}7 z?(0A=S@9B6|zcB4M=?6bckYj`kcv_bDF~Gy3+Z0nEiFR%+q$Q8YIef4&r}| ze&HhL+(|As=@~&e1z4zF?$o$5wc5At&EN$Z&-HPT0$NYE^U&n2PP#KRQJsm5BrQBd zdZNzsC(qnd8?-4fGIDTR08BzaA0wX*8Yz-eIK4+)+XEu(3MV6N@g&iAKAjL@QgLz{ zwFLu7zf$(yDbhB2R)i*IJfjuP_Br-+3^r<&qg77$QoKIHoSf6=jFdgh&|0T7BOpSI zNqTt7Oy28^U-k7}$-jNfL$IlF=E0Pi%V}n=uZc;IsNht{Nh?SxneGtX4v7PGw2~?p zW#!00=X~OOsVveZiP1O*gL7wG)d||JOkyYpLTRk*7rgqYBS4lzE97 z9qpuiS~fK%VNQ}v20kS5a&@J0u*PT;zr^`1-i`qgBYIJLK*)ji_BPN6Od7DByf@CI zeI11pnB98CmLy>HE}uEYnIv`wi_{8t+NC`fm%Az$8J_o{^*k><=njv*3IOTn6WzJ2 zGk(dpx%YOf<2k7PQcFV5(TlJRBB+dVs!iK-bT&DBwGcJ!pfb+Te@*;qP-v1X66 zT0{&aIp4P_#W(vx6JoAGa>-8mbWY73_nGIeXqG_E?-3K=K2PPH(H3o(lD;%JMf%fJ z1lgh-tvJyAaz6u4D9f2KIbp+74U=2K?#eNHWsa-B6A#V|2dqL0Iz)4ZuG+c0%Nj~V z?`SX0yz$njw`?-FDlVsK_<8d7aGcG&BqljR3%i2{$31aPq`ObanFI^x($ZOhRJ>m9 zmRi^6@}A7owFD+K;}TD9Ng~5DKMD;51!)5=Nhf3TN%FJFaqH?%(PAmP9q!U|lo*)Z zov{?;dl6Qt)9q!_$ zM6>7&tFex|s4C=kD|Z&d1;)HfCWSAN|IX~oK7rQfU3KLpvu0j>)vWN`%dU9;j7w+f za};vZnY+LrhL)h4Tz}Qu#zK=o4rJtH7(q!>&;oO>^(jbOP9@33ige0RbA29PTWpur z(6$0PC)^Eo&LoMpDMp%fsX7v{>5Q`k=if=e2*|*vkQ7ER=y05;f~g-mPid8URm0p!I{OoXr+ID?B%MS~w7f2H_UH2EO41nLh6Q(TrM5^U*PcAbp>S(WuBWRl?e2vkYJzB%QWe69 z%+je+NFX!^-})pYZ~AozT=zo5VYSjTRhzkU=a~FEo7n%Awx~_9i??>itGVtTOCm_# zg1AgB$vHDk#0|N=H~Q&|?>yh^%n>_IsJoLf3^$5rw{qT=QE%OpyMxwi9Baq3ygeCx zyRe#1lqc16F_}-;oqUhGN~y6ME~VR@J!q(HqMfJrwV8utd}%zXZ5DFZwAEU4!N}HG z({x7uu3Xf7^;FM~*YKcE$Y_%Dt+jfvDzHF(U`I$rY0swR@)-z7Rkf=lp7+)t^yLL! zOq8yU@RonH&1fA7HUH*K*|>Xa`WiX#l!7zLp%EUfGESfcsXQ&#%KnfY$h%ndjs%@$ zoQ>&e7L1Eq2TXaQiI}%{Bd<0YyK@lXwjRmuY-e1)nB%bF;kIY|qtkeo&!yq_*{tZ{f@+@qpQ#<_i-SwV|C$c#KCo zF{t(_ciJ+N)VFbm3&~x&Ai5J2>y&4f=d+P0`kJ~DSVsH8Y-ZuFYc^hAH{*GGvd@># zoH9F+iX?S{nh}f5^5&7%wp9;X*TDkQj}Fjn`iM%BbGJ82@it~+1Vh7@I4e+w_O3ef z8Ofy5f-V|(@ZMwE7%ivioNeb}-vooVE}m=Y)OJJ2%@+DXI*-%kz66oO_}$rpms{rT zhwTvaBJ6Ee*>qxAWg&A()3xMjj*$Ka+MXnHm=JoB0>W?X(54USqc zM3O%pkTX*5_(kp5ryMhN+VVNS?&OK*X1g=&@`ob@BKti14-&& z>I9m^AXMRDnYOIA1FnmPH?&M6HwW^~(tC_Kb}8;ukb1-EeI5&It3y0#;Z)`=n@8o~ zqK}C)cO#h``{}NaX7RMu8)qdp@A`LnZ!Z$BHnaWD1JoJys|5F#OgVIZ+CM-f4VR_L zJ;5{;;QWTe*9?fK#TV4`dtK%Co=OK^v7g@q%kNV+@SiyM7S3Pc%kP$VJ6{)O&vAb5*SX(0 zX?gf>z@0txzTPtDJKX2y`5Fok=HU9TR`RtP{*GCZ_x&ZxV+j-W_`1p?uN8UUc%nSE z%(GU@vxM`sd3gdd&+S^CHqLX6mnSIm+@|HZhV#tv@`PlbHCmoIoTt^xQzY};s^w|r zJjGs~0W#0mv^>R}$MEtL%RFDz@;Ifd{t#lIu(+S(`wRG55x;}F$a_~c6Z&ujQ zt_>9?@YJpDm+#y!^4`sF$RDdxp1hXlHqLXMmuI-llhg8C$9W=No-&yytL2Gso{POa z<-%Zmmx;n}5Db%FgegaBkO!dzF^W6?l{z0pk#{-g`F_4m$68>j~lAU+UG*shjYEkS$Sla@tnraw1E^>1!dc zmhm0*#A4{Z)4C%38tC#chq#15R%Txix~zr+X}! zX9)M2-jCG2QbvPdeRS$p>eXow|8%`v>myg625NXN*Gd-rH0q(@^6W6lJHr?^HemQkR)4(7`|IVc?$T!&IGR_l<#ov8jRMIc+z#-IgmBceM%{#RKD(x zODOm1;^3u(W2G8;6|)F_$}oPG@DMKw^r2kqMfch;59xGv2x{PH#4y%*)$0lc13jb- z^y(-IG+r@7iIzinm@i@JDGpI6RG4&7Gf=~zpH)gcwsLxJxXcyMTI)(=pp;da$LS>+ z7nC#KyBs@2o*&HIQs(uy(}p43CbvHo*OX|wGu%60rm>eoQ5pA{RlrFltnY)QmJal; zlzDh7lM*py&4MyjqRBrf*{PJ}SL#X0#aNjp;Zm(n1{SbDiPr}MJt>xXy;I_$t3;Eo zgC2|PQpU9yCgtujhO$5oa;yTR2#v*sCaux}q?UVlbnXdgEh=YyaI|}v*8Am}4Ro4*>F_)Nr0IX(~ZG8r$9k3@VVpI?Od7$^R@qli~HdA_^}@fwbALA-(E+Yukf z@tue_JMsG#BHrr6+uuNZniKCRMSQwb{`dDIei6qHAwHAur8>;v{LP5ZX794LBum0r~2eMei-rP9Df<{8~9nB zh_B#y2Jw|#Pm15f@jT+IIL~s#SMzy_-^%f|h_7|pawqlUI*wDntmk`gKzxI9{tMqn z{4S2)hxol5e;)Bod~Yk_Tey7cqwO3gne5~^$zeCgsqK$(oZ7pWpSuF_{e1oe;s>30 zXA$CuIL~Ut5A*qPh`-Ern1=W(94G7@;rLv{k8+%F@+!xv-{0Uk_2V&)ClNo+agyx` zjzfl(jQ=}VBF^}~^CrX@|97rJobi7rb(4@qah;w{i=|k09>g-&{e@a`10{ zk@{;l=K+UQI`}WT2fSLjm*dpN{TwG*G5!;Dp7Ecc^NjxlII8kxjxRv`6^>JXG5+r% z{4oCSp?+ul-$VHs|MyUzGXC!&tTO)Zq5ft3-vjQdV*K9&*;XIiE{J)CIVf=3dhgUKFH-fLK82=l=QB{opjlg!*IxZ)MIOBgKFi^$# z-w2(mx{K>J2l0D3PIY7aZv-z@G5$A_thRF;x?jcoznbdL{C^*8dKL5kwbYNy|JPC< zG5$9KdsPQH4qdA{#BstN<9{{mT@~a1K6)1O{|~6`jQ<~ii>e&_7k3Rp{8he}@-zN7 zQ5_ino2V^}|4o#K@xKYrt!Dgh0=BCe|M#KHYR3P4z*05i|32_ZHRJz2^m{eq|32_l zHRGS`T{YwXKFGYfg5!{3bq&X%ch$`Q_kqW%ng8#DeXM5u-w*6nGyd-fhO3$X?+2Gw zv;T8H@LbLQ&;97TYR3QlR0qcY{kI}Mm*cP_)$IS=54%v!{?Gj+2j>6#Ne;~ao1wqe zjQ`EBan+3f&EWQG#{XvEr<(D<8F;JCa2)(oo#!~PQO)?@3_Y!8{BNeVGyiWshB)*8 z7Lq^n{}z%z<9`dupYgwiP@Vch$`QTdA)Z|676iYR12eGyb=d92oyw zscwfk4!x*m|7R;~P&MO!D|o4z@xP7wh53IQ$%pxW8+fLg@xKjxTg~|2Ms;TVZ=-%W z!TN$a)G+?HL0@VZ|J%S1HH`mlXiE*_e;egz{BHwhY8d|yKyEdR{|6wq8pi(vs6!3o z{{hsYhVlOZ@L9w7e*n5%!}xyywz!7z{{UoC!}xyy_Na#O{{Z@{hVj20IH_U$Z-?El zVf=50j?^&zw}U@x82{VRUp0*X?dY!>#{YKUvxf1%ou141-wv7AF#f;rOT^j#>7q8W z|IUzqjB74!cN z_))ct{~f?;E#v>@_aa`z^#=xO9sFB&K<{cxIS%aAmT?^XTsxBE;Fekk|JJu5hg$Z3 zx?qE9+5cGsAE}n{zXSHJmhry>x>?Kk-vJ$|W&H1et*>SL?*JZZ8UH)br?rg#9q6N4 z#{Ul3omw9Mt^p2f8UH(|4vhaDum!b@{~ge~TE_nl$gr0EpEV>O#{Uj#3-kXDY9sUi z4w4V^|4xz*`#)<)CJz3s?*NmvjQ^b^Hy;14fgP!3{O^Q)sb&1{1omnf|2wG;jQ^cf zCgXo6^%vuRCvZ~B_}@t~VgIKKd{xW%znStl_%Gf;^>pxW{RCr{S_l8u)4+2rTQn z?acqXNNx`Pt)J3)2mjW8fGcW`avb_n`zpt&?Qd|L>U@mj)JG2ftzQxz82`J#jdgY`F|JWQ^)+j3wWzz{@(=-sbl`%1-+|d{@(?DsAK-$ z1wW^b@&7P*yN>byFxp$k_YbehC{~C-P>KOkIQ#~2~kHLqpWBfmkHr6rz zccD+~*#F-J%+#^}zYBd==iuKC01tHz{_POtS?A#2E`mPRE#^4%u`b4OYD*`_sVxrv z?EzE{<9`=?<2v^L*HD?uISRWBfl(a%28~oZ7KXq}pdafQ|4%@_>KXq}z!ul@{Le0mJNUOR119So{1>Od3H8kX zDfC4>^M8uUVf;S<8P@aoHwA3eGyeBLhV>5q?S&X`)=%R&a9cl}cITJ2bip9{@(-n*E9d`fsWU+|FehM#r(eqvaM(S-vdsoXa3&< zJk&G)qsxoy+5g!KPOE4CXD@v9dglMVz*0T?KYPI~^^E_$^jyaOUTO>De=q!vddB}= zj3w(C|9jDo_00c!scy{wd!d{4jQ=O8e;NO`01x$y|63{%XaDCG*pzz4|1IYs?%=;T z4SQ72{{NHIkBt8(!ISlj|0k)h8UIgGeHi~wl6;u|pCtJ(|35{2%KZNneD!+v|DU4r zng5@n@|pjiqVn1Qc?$Yi&;HL-;Ej6rfA+zi*0cY=4}NAn<9{EO$^QR7DwF;HeI#4P z|32WPf$_f&a&BP!?}MBh82|eq+Xlw}KGdOs@xKpx*TDS04|?6e{J#%)YheE0kGeH5 z|L+I(8kqn0gU=fn|NGJJ4b1=hseH!&e&|I5`#<}^Ee-7d><1?_F#q2IZf{`zzXcd; zVE(@a?QLNHe?Rch!1&(}``f_y-w*z2;Q605BnO`VSwnJQ{67smH}L%D8u(5P?EkMJ z`7r*UhRhon|4#!;4UGS%!6yyO|GP+rJpaE7W6}o3|I_fJ8W{giqfZ+c|4&nU8UF`J zhK&CM^eo2z0pO>B@qYk)-N5)i0N>s4}e!282<;TUzq<7 zz+N;k{%@f;XL-KrsfTc#}|1>bx$n&4O(3VE#|6Ra9BhUY*fs;nY|1IFmM)rTwkV&J9f7tOx#{V<$ z4;vZ(&%j7=;9yx(#Zb*F6c`m>|AXM|M#ld^;JlI7 zzt&LsjQ@kcd?VxkATZy^{?BdnT*m)Fk^|%aAn@PF_&*4n-pKer2>+*%$G^7`9+>|h zrgGT-d6??Y>tAVLsge2rAn@GC^Pg$zcOL(ysUI2t2dTdp{|D(_#{WTJwUPP%Ajz5e z|5?Ht=fDX~jQ@vW*P0mrx1oQV82`7SEluqI z+=jkxa`8{kW&EdswMU|9KwV*u?mM9x`v@`JW81 z+Qj&O9=5EB@&7z*L=)rxd0@MV@&7!q(Zu*aL~>*PKSbs5{QqqvbH@K6V7Q6#pMfqk zG5!w$15J$oL+JM==Kn+J>n6tkA#hX^OTdi<+4KUjS~K82>L)zcBy5NOEKTf01Ox_TUK8X0Md~BQ|BK-NCdU7ZR3_v9 zCBh-&|E2#$+q=hCS)F;`Yv216k^muuGmd-2B9A$r4?wcXfpHuJR76zNjTnZf4M^1) zBP#A%L5dtAQVaoMCj^>W2q}Y>L5BqDGh_SKn(|PLDaH*(3>YzD%2|1T*WSO29j$iy z&gb*~p}F?G?|a>AUF*Ak>$lc@CqUC~c?cfnO6`F|HICDQ-Ai#aHf{^woH zFNyR&?;`(+^gnIjHj)0P4ed&#|7ka@7^%$p#&|Bqts zOQQZC#k`zE{@;h*CXxU5k%uJm|318568V2$>QDaPm-PG+bKKeR| z`u{%ipG5taJ+~z4|NEHZlBoahgU=-L-vP}}BL5wjYm!v|F^?pX{|=17B=X;ZIVFkw zcVN6Ek^c_q7xLeMv6e*sKLGzpKM2p9ME-+ldouYC;$F$r z{~+?2O#Kg{zmlo{$54l4>i;pYmrVUXhB_xx|BvCm$<+U2U^1Ede++$^O#MHGJSS8C zkD<=Vs{azx|LljhB-8)wM_(k<|Ln(jPp1CwhxR5@|M!FQWa|HZsXz69KX^#y{^x%5 zV>0(Ye-BoZ!~8pM0uRaLf7LCB$^WW55tIK_FCr%Y$K<}`|Crp1{2zm-N+$ou!Co@g zzw4#FI;2Q$g!|2W2AGWGvB`Y4(FAIF@VO#kzH=zMaRf9HMBjb!q_YByr? zzv^|w*JpqVLT{vD}jn0eGOzKb1^PJ?9n!g&JA%%NBFM+ERGXIgp zWd5TH#AN;>$sw8lNa|0`{|Nn_Le2k3>P+T8l3bDb6Btt|Wd4No5t%@ z{C^DpmO}nNmip84yd(Fe=joChlK(Dvh7@|9E@>C}?~?kE|1Ril3N^n=m?ZyQQa5UT z7qmBp?>xK%?~%%9UhkmHROKHUo=X0^Fn^^g|CpCkx#zP8<13Z?cVXU1CI4M$V=DRY z0^6zNzY7|hO8!rR=T!24675PQ|0lt4Dm~9h%qgk#Jgd=1spNmn0L1h>C#62hKl&(@ z{QnAbVk-HUcQ8`P|F6JRD*68vG$EDz?*%idd$u`-of0FO8(z~4@{-!muJDL^!#r~yPjl>eoqba@7ynSewH!j;?ywz&Svy!YM6g# z3&wsbHUGELUt#{8zk?>HRx`$UOx?s-`Yym2T9jJP7-K3m%)e9iW>a@CmO69K=bhz< z!~8pcFXiuLEPWB?-}w&sOl@H-d47|zi=u8?t|4HOLjh^Qv zsWUzQNzBV>^gJh#w>0i~{t)YnH12u+5PYW5^PI%ookspofq^u7o>TCIY4kj&kmoe& z|0%GVM*V+S^2uku4?{oGsQ;&+Ice1YQ<7)u|0&58_5T!jNTdFrk~&lWKau-V|385a zq*4Dr!B|eC{(mB6QvW{zGilWSPrzgv_dFk#bCiF0gEa1W${ueT_dMUh*iYl0|HHxn z*Srr)U(^3QEd5CTBb=x4o&T4h!)aXez62dkqyB#a{?q7xx}l9})cVLPeLH+NR{80bbU`|h?|9MI3N&SBbOs13nZfH@u>OZt1oon8AP)<7e z{}kgWo%;V0_)I7NpF%&=$^WP5i*)XJzJ$3To&0}_wxpB)Ptn)uUJ76!J z{zvxG)9HU62IuMI|5K?O`TrC=q^tge$#i=Dci{2T$^WNPPkR2B;9=6k{JS#H7wP2x zQ{*k3{C_HSrsw}u?n}@ADaKSf`TrDbq?7+op@-?@|5LD$PX0fYypjLY(5`fP{?lMS zo&M)E*h?q>r=@P>|1@|=C;y*ee5I5B&!imk|C!{I?>xx6Wa;GpGmN!#zVov|@=5+b z13&3}=VycDiu`{j^`Zay3@oM7|9mESqyPB~`jbxnH(*_pPXF_n4DElC;vT|gVM==59Ygc^4}wMBmX_nt90_;BlRTzJ;DIjypLdh zOsD^U1UisT{(GeU^glh)NA&-nBexmk|8tz5LH++6TAD%q{~TjHgZzIE_A;pdYf$G5 z^8Yy)$RPh`(B2H{{~2(eLH^I6{u$)|3>eEG|7*}M8PxwXQjYSEJZF&qKO$EdVg6m^ za({~v?S zWKjPfgJx#%neStgAM*c&lu7=-faYhA|1U7NW|03cq|W633n`!ce=!>|`TqhskU{>x zK)+{@|1YEtT=Uj|{|xf~h4cmW{|n5a8RY*9jMEJ2{}&ij8T_5E$0YyM|6a)n`R|2x zWsv_~%y${&zgOx{{r{uH2CzJgD z8RImQ{QnvAVllp&F>OlSfBl;+l{QpsoQ~%GRzcQ)+XVG7o)c>>KHk17SQI3;;c}|qcXI_s% z!!zms{|L4-`Oe#W5_8YzJ;_^`f7d#x1NlEI$I1U$$szeaD>)(mXQl1b|FhC|@_!aQ zXOjQ3@SK_C|17jIll-5Rz99cKaz6P#E4k%6ZyUj3Ci(wL$|3(>!5d_f{{Y5RCixFw zOl6Y)ufSU-^*;bz&7}W%Ph#r7?Ehzy|F59Kne;yaIZplm3QT5F|G$!J$^TcFM>5I( zSJ1;u@_z;MNGAEe0=6^B{}o}9{^yG1pZb3V+LcNEuVB1nlK(5He-`<_f;wb{`Io;V z5uFvq7-KUlmNEJ(D~>VxA}fJ0c*`2j7&*@x%^13rZE=KU-$kH3jH%zr-%^IFzTjG<~|J&i!v&ertn9K_E?>Y`|mKEmTCHpN|6)Xq*WG!MW?R}In_{pkd44uh( zlChNIXAIAl73RO69X>N_Ib&(dO2*PJRg5J+>lkAW%Bp58{k4fP#&1@Dv9!IOF?h&o zU<@CawS%$Lzlkx%QPv*DlJmWcrGMXGEd5LV>*T)VzYdz2^%l<&uIT^UG1jtLd0hIA z`dpCE1`#3VgCC$B+s3UrS07FuY=BK(f`z8EM!st>!jbQ|8>xutn<7U zx|emCF?h~4jM2Z@*e9cX(t`FCI}XOn*i*vsZS4|UMeZ0dgVKWojrv~)JLn>yX=Q>VF;jF`N2dhdgJ~|J0!$v%~!Nb4h(>GX_`LljOIygl8*F5gf4B4t*T3zOTdsdA!EHA6zeDOn{qK;x zasAsNc_9BC(DQ8aFVEVtssA5fTx65~4}=Hm{|9m}^8bPK3;F**`jPy9fVm)>?>u~f zxgeYS{~us3$R__mXhJsm55ga2lmDRHm;47Y9<#ar4NBX&{tcqPa=8B)#JI@e`ZoxM zbGZHuqRu(w-wofDL;l_1Du?{LF)nhb|89(n9O}OtY~)b?-N;W4_1}#?$|3(z@LD<4 z|0vWyhx#9ddgf67qrg%Q^oG}0H+c9=>$p142HrJ?`X2+omqY!JfzITR|E+Q_`u`X2 zMNIvV!Pv|R^WQI4>P-EQ#kk8k%vf^X##rihl(E!-`X4K~rT)hXS7HA9^~V^`>1HfE z_b`_B_A-W7$)W!D$N0*j{ttlWJm-@CxNgMsKZB%v`kz6_PcHc%gmIlq{s+l@$^Rg^FZmyYc_Ekl4*~u}hg|CaRw;-455gRgOaC8~GO7QMOP;C!k3+9=ssE3Ihg|yqbr{#V^#AK5=k)*U zeukL*KaTk^m-;_Q+DQG6m-4Cq@fgdwh-CI9glkGbSO9-5O& z{^KQA-2YiG?c(#V^}j(({eK)|C%1*?gSXr_8B1T2|9Hs*`Hz?SQ~$Su`P?x7?nf|} z<%aopKQ4@g`FH#MJ-Cp@F&7|Hq}jsQ-^2Lrnc&+z&DJe{p}r z)c?gPCOVJ$zjzK}>i^<-h^haJzmJ&DzZNe<%=PbLjH$dZ|L(2Os66_gCs4OM`kyB- zZ|0HzC**wkpC>Su^SJ(%XRLYjKTrG?G5ya|=+ivg+9uo|9=X(&Ex*( zQ|OC4u795bOL_D^Phl>|qy9g27BT(L68O(N`k$v`5YzuZos5|N|7mcZNB{Hm4-u39 zr(Zx!{{50eu7CYtBai(1Pa-D&{!56-|Bpr?CjUQr2r>Q7GZ;sCeCOvG_|H84&4*`J zAtwLNyn>ke|I9mxssGPlEaXxDe~dXIkNclLPDjl3?~fNF=KkkW=`XH-mtH|k|Fi7x z5!3%HD?v>E^PJR;{^z+y#N_`uDTn&M9RKCf|16)1nEq$E^b7sZa_JZHzZ_#ckN#)* zPQ>&-%XcBB|5*-w%cK8U0lm#5|Hm+P^2q1zx|6_L|CjZAUr{t0UW6VG`+HlO+*FXd4Gi=NOFZtB}!RX(7>VJaNpZ+HS8lF%8 zlYsdppZcEwz0IfpNr1-Y)Bhx3%;wYoBtRSU>3^{4*7B-e8P=cUgPlYjaBqkQuJyzoH&pNG!mlmF-CUaJ3+fAYT-zBHfwAIG@J z5A$#R0j%be{~t>KlK&qHt6~1FgYcjE`p%p1L;jD$=j4cI5e-Y|mK>k03 zUoD{iFOqvv|Cb>r1!4YOScgRyQ2!qSO9j;bN{r0{?*A{9^SS>y7V~%k_5VYO!~9z_ z(WeE}{}0iR1$_SXFW{{p%)jet^mPICzY;ktp#Fad4^Tk;{}A(g0rmeODWCfPAy_S- z{y&WIQb7G*1SSjk{=?6~Z~^uI3%M8d{|orr0{WltfvW=Q{}*7Ofc|G0^s|8aUn$py z`FA~r@mN6pKPPpj{+~m?7f}BfVeMQ%{a^GYV(R}QFj+wTUx_hQK>i<-Iy8|zsT=t} z2hAy<{-1*e7VvLg{U>ywfc&2mPW1V&oJ0N>K)VXae0r@|VxuAgjpO<@u`M2(p zJoEjBi(tEe{GS&d$p3j^mHK~P>Kx|Znjq|j`M2Jd`jG!6V7@^8kF=NkUjT>W!~9## zsPlO0{{?uD@#KFIJjVD~jy13}KFq)Me~^>${*{ik@c1zQ z*6%UK$1mbJQqH4{_;#^k({qY`4jn^YYN8f#4zW!xfq)h>2u0a=ZWOJ9Ce#Wov%i}Or*|NBmWcm zoU2-{CFfhg^F(sKTFxQotK}SWz8d3kBKP^LF*i-*K7Tbdc_R1utEHaY=dT8b6S>b{ zjd^4u_xY>QrxUr)Uk#m^$bJ3|$j?M_z8d3YA~|0z<&*QR@P~z5=Wc-aDCBdl4e-^4 ze9pB2+!pdV*9PRakk5HHKr;*ZoNEL4DWuQYfcdVFK4$~QNFkqdZ2&Wce9pB2T3yKJ zyc?j^g?!Gn0rO5FIWI?^3(5IvXhk94bJ&2fR!GiQV}2>5&To+O`JT@P=w2Z?UoCCq zdp;X5jta^7YUHhu&$%{WOcnAu*9LG>$md)e&_{)Q&tU`lqLA-7Y=E{D>N;1-q0Xyc?hcg?!GtLF!4)x5_!x`PCSkh17X@SD}#W+zsHTkUGCX%I9+~dB>oT&$;Bi zf26|P<=Unn$K_PX1jhw^x9BRNrA^Be;=aByz>32Tos==IFsQgO~xz3g6u!ZDb zp2HTBe|eT#NdDznY9aS|YJ?3w=auK7h2&rU_G2OWUn9(re|a8SNS{*l4tsypGgkMe+{&#kk7elgf~9ts)42z@;O%x=9eP!UxR)xBL6kG zZxQ*g!B{II|21H#i2T=JtQC>}jmUoy`QM1#7Losrm|u#>|3-|dBJ#fxIV>Xo%fV6+ zb$%Z5P{jA#HcEZ?p4&!nSVaCeLMw{M{~C<1BJ#fxIVmFl8>LJ>=iMlECjT43QW1Z* zWs}sI{BJ_P7m@!>QcwDv2Jllv{x_koi^%^b_|GEh{3eXwBEILa3Ct9c|4mY7^1lgv zTEzDpHle?Y_?&l>5LofN?jDGi$fBE}YUh=;gOnRyRTfm!_{BJ?7yySli zw98BWw;)$uzUQz740y@^7UarH{ye+zQu zrT%Y$hIr}o=gB$r`SLeuz2tuj<~1+*-y-=W|6AZ0yxixRCuNfVEttQ&i zBKai$TQJ7GteLe?Zzu|0C~ld8z+v;4Qu6KOiiT z{{VcEm;B2+6<+c$??QOVe*ojlOa5!6UF5%3+Cu(o;n}?8zg8F^|FyyZ{m&YyGx?Xl zIW~#>*P^|X=<^%E+a&t@204f8+y-dfB(8HC(7%)D^Bd6iN%Z**7)O)n^X2anPomHN zxy1DOuSiUvFMnrs67_$F#PmNqF_%rE|JjLtpG2R(6a7Ak`o9x7nM9x8h_Ntai4P@ zw0aW#&pfa+iR;{X7*mtTe=S&@ME+~BUYQSgh}LI-bt85{_CLC zlgNLa)Q9}bGxtg4U!Jp1BL8(#KKYmDZj;FWRw;-2zg7C3{LB7QG5Oz$zAmQzZ$+Jp zssHuRlVb9}26ZT={?}uy6;uD~QU7A@1$^SgGrC9wB z+EPsYub1VG}@w3zx|FZHMX*JEBQ zrvBH1rDE!TJ^Hkm`d=?~Q~k%hR!siqVO}ey{?|(mssHuxjm6aedaT!q>3`}mUW%#z z_0Z~K@;^_GEC13)>i;&(FU8dVZRp2h>i;&3>tgEvHuPyR^?#eRm-@dA{adX5AFLLW z|84Ly#pHh*=Idha^Q@8flK*Y+=f&iIyYxHx-!63^|J$Ws$p3a|OELN14&5jw|JyNM zipl?W$szgQF1aHA+a*`r=UIa>TTK7|eP~EA{r?Xn5A^>(kUG%+{{VVkO#lA_XiG8q z{{=LvnEd|&x>QX5e*v8=CjY;{7%3+IJJ7}w^1lPVqJ;Wig?g5d{~Z{oCGGjzCw{5NAfmeBt+W89U{|1`q` zl#u^sc%BmS-wYl~$bXCEpZvE#TS~}(i{}!na`ELPNCFK8rfQFZl{{tA;CFK7A#%u}sKOp@= z{XYO5E1~`$5C*9K2c*BK{|DeLOQ`<`B!|@h1JYjde?T}P{|BV)M{zj?3=Zty0RNr$352f7ysR0kA&Twvhiz!Up-jgtcKA`M)G>A^(@)Ny^CoCCr0m`g>lIEAoFy+DQH{ zVV*4`|CcaE%JlbKjeM`g$_?zl1tZCjU4!dNTRH49`EA{9i`jO(y@BF-9hn|I29CWb%I* z?V3#fFJr!*O#UxJODB{6%jn<9H?4wR5|CiDB$z1=+p6X=se;Eu+=K6Od z7@JJ}zl^p|=K6P|)S3KWmNruVFN2xM0=_3?3$v|1YKO#FZurxbI@e+ z|0Vi*GWq{f@<9H-lsu6CFQx6||4V5v`TtVdOa8yaoHCjE|0TxkWb*%|w2|vy**Bid z_3uW>Kl$G%_a*;dqOT{D|1UAdCzJm#p@);n|Ci95$>je_@HUyxc{fU(_4i!B`D8x- z+9>tsbKZ?of4=9lQR+|rzmh!g`PWAHvB}i`uY>{pJs0pinf!kxeMoX(dt(X z`mwx~@f)G%G2!PU(w5FX=XCWshk7OdzC(FfuWa&n8_IhbgRAneUfFP)=<>^qu^yaf z7^98z^mz^D#CdU%^XDZnhQ7@k9=Y#4j*;3Kp*^E;EZ6ED(d^LvQ8@O6{!P1ZdxN2W z(=Hr$h5k*uaNHC6H|@e}M&$XQ&qw|}yZL;7=AUuS{BeD6$q`3!!gGA_j#`>a9BZI-6=73btkm0g1WjBW50sFLiP_UsH=^r za|L~c>>pN8R~s=;RnS*7Vk}osS7mRog1({=b4>+xwNdUxU2O#a71UMPC#;~Z?n2*H zP*-<>p9<=#?E6(vS9gK=3hL@E`05Jk>Mm&)b#<4NPhH(5ZK1C2!rWa!UEPJTR>3i{ z3;I?;T?N+B6&xc?(sufaCaD{JMH6(Rg1)*5S`0lO9g#JleCw*+5`=+ps#4c*sq|kXo4ps#2G^A+?JP15fir%ll03jH^; zq>uF9%z{o<=)ai-J+IJzGYdQ~(0?-v+O>e=viG-E+XCwO3uyZS>iG+(^8)Jm3m7{KsOK+$&jr-;7vN(TP|shG zdr{9{04EEm=WEf|3#jL7(Ju?A=WCI}1=RDkXzv2*`Pyp4)bq9Q-V3PbYo%S(^R-ew z_54L?3-$a(^y32V0lp~prw4u!{4e0UE-%8*ET9K?QR+_*@FF;0Ko77EoGjoPaGm6q zdw}a2LjU%|)qewGK~Lo0fLNFnc?W4>UgRC2g%cw07cDG}ytB0MrpUWh3#UZh=UF&C z^8Vh!8IgCN7S7^1QjWemhq1HJ7kRgE;e(NP)fUc=ypOc7BJxhr!bOpH>J~m4dEabd zW#k>Og-=G_$6M%+ymPhi*~q&_3ztXUD_giS^4{G-j`9B*7y5S*!Z8?I$a(XpV16Oz z#Gj(y7t;SMlseP%{8Y-}bFPI_AN||o=!=E=cg3Nf4{?tX-$y^hef6KBJ`eF(63&(P z2*ZEl9rt~Rn*28I`w(^bZH%dhsJ(B4lZU9cZ(~k;NdGQ9>h=(I^=;_qL;CmUQMZSv zpKpWJhxG5vV}5){|F%5VUk_0m-);@Piy8X+sya#Bf6sD=NmB*V2} zuaXScq8}^Ca4qJbO8xyuX)iUQPTEU`>oE2!xsSbdbm;f8!tX!^L%$Cb{v8(d%j5jr zqCszjem5o@!)HFu-z^&SR_OO+!ZG^jasF=6Ak^(~{%+kM^u^+^R=9V9lf_}q-MgTN zi^FWY<$d+V;W^9wJg!|F=G-lwc5!%aa<7;3!}F258u?%R7GvadaVul^fyMk?6?tcD zF@Ha07re*fF2>NG#bNz%%ly0eJY(qI6NWL^ejnSkz6gA70J~SUnEyc=0|e1B+Q2UPw)my!kXqj3_V#A)-m@V<-TF< za=(jqEn%O^-;Q3wK9#?Ryo7!F9>&6whDffKG(~c?gninMv9_colB*@`)Ayk{OW3FK z??WwVi{xqv`?LesF3pPMYH4`fxjzPzOG_iUS~?|?tEDp{xmr3qlB=Z;Msl^ZB9g16 zk4AE}^vOuBmWDOT-7Uw%8s$ETvAHxn54t~rmM#rzxLfuBmxjHW`#i?`(y$+MUqD-y zhCP^D_K}u`_1rCcCQHM5?!F8STpHGM_m>hMj^t|T(Fj*dJ0n~z?Peap^U~f3SIg)* z9jO1Zsz|Puao%yj?=7RBbU;Iv(L=g0mo1}jbYos#Mz0u!aj}g4P<|J689iY?u)3@@ zlB;EHkz6ecMsl^RE0U{aJ&{~3J0Ho_b0(6j=b|FHdM+-KtLKJCa`l`ilB?&&MRN6A zS|nG`$X1idm6dt?)&1wPJoGS1T4pa3zBL~qd6Bxr!t{l!7US(x?-m#v?I%1`V zF><)_ddBFlmEk_JR$`sCGKsOAlg9Y1(C=V}>wxvw#QDblGr1r9 z>hbBursYiNGS)PW(T{ud{29hxp~vSN+hZEfHnw>hrx{za-WS?dqU5--dO*s$1z5}(&JAW`}=zQ4P!a<_=Cp& zjMfL^y;zSAHqru{OZ(^&tgaksJl zS>v~i6{qn!WBaAX(47BAV~piVS|4a*w$@>tar~X0ga0+^Ihfb9A1CZFwlDSkIAiV9 z*l+ATdQOkAeyH(fV{OoL5{$J=kCz(T&00P*c7dK#Z5*l<eP1I|>#;*Na4h?yq8eV=h63>h6bG*gaU)H!S63>f@#FLL2 zn^((x%h=!6^MjFiLaVWcYOXLBCo=wrIAbpw!Wd)!EsZfBjnEi<_p!#P{}hd<80-5Q zBUjlPW4vEIzQ{P78iS1i8Y9nF<8{XVmB#3oI*p;>A8Cv_+ckdE*zVJ~)!24wj2ynL zahI_*YusyWs~E#B*+*#%efvUVXwmmHhQ7_!7<2jwjltpj8l#~9t?>-wNYxl#OY3kG zboFM9;jgq^H-Qbe#+ak?HHNm_p>YHHS7XerJsLwF7HRxD;~1iGo3W*7jPYyJxCabq zeA(C!GX6*K^B)=~7@M~JA3estO=HYQ%Qen3_RlrOn&=^o;W?8u#ymAfWBAM)HGb4M z#%c^*D$sbPv1VypZS41I4F9l2W6YxOwYTI2J^ zc01#n9mb~pelzBUmox_dPow07y81vmL8t*XH)iN>n{aNETjYIqEW{m4e8iW6CjWMqc(ik4b!}yb#a zjlut&8heawsm4jhzE5M!N59t?{3}aSrW+ItIp?DHC9?fDyx!T%>3&oY*d>sz4zzt$LQ%%5ot{;!_D+*mp< z+_KJ?l^O?({ZATW&7wTt0{#CNjj^VDw^EJl$Ww6Fro1|+D51FVjJhSF%D)>LI@w3M0{5ZAB z*stCTUPzgriglv4cj_Kvzg}bbftecr&e;E##^C=48bkk8+oxh(qvLccyr0%{8azyf z#^Aq0W9Waa#^7IdZyJ2g|IrxUyH#WGuXFJ<=)caD)8-pTg2s;;>qCvP{>suAo=W?1 z8hqw(jiLXlUDKM3{fx$M7>ADEY0!Vo)ikV$)T>N`{{Kp2@UQwd?YyzaGM*0pb*xQ? z|53f2j&*mL#?XJA)2D-fosXt_jg_l0_}4s4hyJVPOb7p}$?Imw&G>@G;9s?CI(+*`#<#-%9MCw{*wk0t z3jd?}d@KCV;~J+K`;!`D5fY~{^uJJJ`2VXhJpW>i!GE5{mB!Nkz4cjR{ZZp8W8Tvk z`mY}E)&^r#A8v*I>-=~t_*a&0h5qXpycO%;tr|oBbw0WkYabo^w_^RSe(W~zf1Sqg z!sJx5<|KF%F_*eb89sH}--46c!8e`q0Ui9`>=%c9+KR|GHM10sqraW9a{@8pHo94>REZk7x}2 ze@{2G*78$7VqPAJMoI>u8Ok|GKuC0shs) z+yVa8Gu#3GRV(g*|4|LOBgvQ*8iRlBi#x#oPc@!y?4vb?|51IrW4^K0X$=3PYq2~0 z#yqPr{EvFkJF1PPx^YLnG3veV0ROr^y5kLFbnM&#{x$!195z<3#?XJA`|g1L@6{Ok z-^6$({J%0kGtOAr7c;@XdYGBxj6>HoGr@nR#^7J)teN0n*E=(z|GJKz3H{f$%!L2n zpfU7c^=c;gS6@97{zumxGXusEqcQxC>h?_Ve@tWWubyfq{Ev>oneacV;WN98UD=ok z{lACto%o;5Uw49kW&6(I#-^Oy3I3JyJHfwd%bi&Ns!zBR{zoewv!pMTaE{Oi0n z3;gR^br$@OYT7LLANBULz`w2sXMz8BHHQAH#?ERo<`)`+|7wljGM29QXJP%ToXi6M z>T_m6|3A-xLEzxL@}y~d_<>)p`*9U8;`sQ0@Y{40ld!~g4?es`KNn&-R0zcP6@_*YH1 z8~#T<%-vZ3>e}#b_#e&x-Id0!zT)m@jZNpiyQ_>tJ;2?YjQxI%8;o7|tnLQ?>htez zF*eyXx+ynmA7u^H@qgrU{r zXbk?RYwR_4-4mM){&g)sdzP`ip)vITHI1?U)ph7>@UL^w?B&L$eLWlgNBNlz{&n7& z4gJ?KGJCJFsXokp(>RpX+3^3Wb+f_$)$_ZI(fy6t(0`p5?#2Ifuk2pv|Iams|JQl^ zUg-b-)i}-AzSJ20NB3dwh5ylY^u6#ux?Z~%{9i4z!dSXraWC{=_eSo8{_B{!7yRpZ zzZdJ@wHibJYc$?tEL}(63;(bEaxeV9?w8)%X6*Yl2LBIe++%F&74L=q>stOk@UMF# z_kn-iYrPNrtG3*iWNhkT?!)?bwZ_nYU7Oqo|D(L!H``cyG=~4zIsLvzjZOE{?gRh2 zcDQe)v2+joKJc%;@xFRv>ALSe=)ZdS`=I|<&jd)^VZ7lWD_rw1OH3t9c6YlpKhkBm-rx>GatNWqRFGjt~A{echZWJ(&akb-teShOz4$ zH0LejP&Vd(fA#!xg2w1x%^dKrx;h8?uj{V|;D2-sJ^=k!_8x%$(R@BI&e(N--~sr5 zt-}NG|GLNZ0Q6t`OTJi zJB)Sp9O%F9BR%k@v8%>D0RGhvJaE)lx`+7y{Euqp1HHzf^_gpoU7wfDh5qY4$z15a zj@h}_8@u}ax$r;gL*~N&sK=grld z{Ea&0JOguNekWx!SMmGYJ_qV}q1Ej(dn0Wgf@9~<=F$Fej+}ChoP*=NYePB7Z^wC~ z<@z2Rmpa5ZUpXoFlRU7FmGXHv>Vo@@U5lUox}qy6FQzfhM4^mMDfg6x$e6uroI_2k~Dgu74M04%iVc>s|TIzpYuycSt!} zM(>@?M^UEDzdc|_o2|a(zx?5^0%*_hCgv_T#M~R^HCHfLg`fLeEs{IrJ^$dkxa*Cy zSz_F`pbEJ`ovoG|J$n2N98awZ=giR<=Shz9o9HU{UUNEf&cEq7a_wHrW0UXKqU^)& zhkf|IaXropA2TEHdFQ&gzprQBzSb`P>N(QyPH+%a6&fG;+t%XTNZVeo?90R+S0HLH zS-`n3OYYapwP@#IcgBM_wq|X(jl-Y5a%CUNvLg32QQ>lnuAo1yGr6xHMf=R@+}AtS zxnDmj_dk8Z>p}b{{qjS!(Zy>A>GwGP1L-dwC*%45TfWn>@wr?+_qbp0R*rD&U!;!f zP=~eniO-M9IV{K7Bz#%O$i>`k6S>A8~)3$lzS*Pt?8r36!7^=iE}tAv>~xqxXp0MRGJZNl zt1wO+a?K7Ir}&BEap}esbdC*pUUOYHr_s^eeR^!b@rt9lr@_(Odv+{Xb~K;g?!f)W z24YW*4a9Yg4J4c&8yJ3KY+y9%vqN}j3~So+sF&m5Etod~p&a+e&m{cpC;7y2Tca~* zlkY#XB*4)eUWslr02zhk6aXx9B;+*afA*xJLn{ugQ6 z8JsKil=*8nzJn%S=3Mp)NIgWGXo+qZt{lHCqFvMi&zTtXiOFdD)Tcm#Y`A_mwv<~-4K>2R`9L{rZlyiA6 zgLA!lF3%gy^E}@;FXtQQd3fH?zUTFZ@*R*d5!d%P&WruV=cvA)o5-JNa}(zY)q%Yj zAHp-|iS$O7&+(e;_+HKtqr2VSVW*q{%!Ou%3;puHOh`9}s~&H6dPIAMce=fU4?68bq0W=RSOA>N)nhrul60Uwzydv_GUfQOQQ?lY8kETzl#p*RDebwvL)$~@S51M0fcXUQCb@9a%(UtA;Rp3^tL zPu$>(I(~yMHd0P*P_F6o`H0+SGwRiGUEjGJeS~~`bDs1XTXe{)gz}sFcB|VH@;_rk zUO@CY_h)^}mvYv+JaMh?R)@xVa_QZMm^Q@h&?l({!GyIGz z;6Oh`%h<-f`uXdP#C$)Z zD%>CTZk)gUIumya=SrJ)f6qVo40JN!FoPSM-oer?Xlhj5_1?i!pM>Ts$D|I>is2X^ zj+UfIef!K~v7z}T#%H6qk8SMVd{Oe@Uloux55%~%>HL4f<#E(|%-}jlz1cn1I|yTI zi*Us;5#6^RrC(n`zjWamoSPsyKZX7Y`E~Fh{e?EJUdOy#$Ntspp9#(59{7mRdCy_Y zhUzH&yCNziL~pT+A%E1>_-{C@u99wTF3cy3x|2K{1!@7k(j zGbHocD_8v6g0>y5xmWxr%ut@kHAL?9==W)ne*e06IqnL^${3Nc7)TJGo;y4^HW&-; z`*rkXWu?z%ea&-VT+j55^w$T3p)t~Dhh0I3zs?^IHsbtsq2p0<{vlUT_)e9apTIdy zE;G3PdjDYXRU~s5`HJsbhO7C?CsMXt8`gl_YlX2Md_IM9cDPJ@_t;=m!}q-LU1NhB zCuXD-)>`u;zcF&}y$=6~*KY9GcK>V3h^Ddr5q;Y(+>n>3SB3=8_MG?7*Rc&~dsm;f zpGIFHza~Lg`Cd@wot zlzy(UeCTg~|KT`Z6Mf~P9&f+S7yHb00o%drd{M18HebOtj%q7llkeNE^Eo6J@UkN^ zWIa7q)_pmTZ-?HV=*!)M%aqFqWvZH}v6q5XMLX$4G3*Z->T6&OGtL?Kr0spD_+) ztn`OA_TTLA_wNAjU~kcPjF~|gGat*nq^!_d!pgY~3=HbR_uV+Q{d;E636%MY(?94G z%IY&_V)~Am*BoAql_189`P!KIrdPS>@`W@_c<6#pQI=$G$FY8=T|TLAsd&N2Sn*w5 zVf}l8sNFojWS;OUch#0Y`CoOeSQ@H=L2P}DxPS(u~Gww_qpfPuZfB!OMZ$Xq+B$q6j`iJ7*d6f-n47XM%UreB{i`b-H=EJ$twKB} z66BnFsO5&{p!frs6E04Z`P+6u01|n_P$gmX)no6TDtYiY&QA3>&!&2uT~j3w9@mMf9=W&gM5@Q# z?tFMrn_bqL9vGaEzl#gvScgN_u~$S3XNq@fbw2#4*UGve9;yf5i_XIfO@o&F4c*@yMPp($YaXFhW%33J#KpLH-PV4a@g zv!6~1*t@6r9NkF)$Jr@9=h>uyvulda)s+-*otWZt*ExJqCz1m0dPg8CtNF^Oho|_= zu(X&FZK%&$E9h>u%RH3bZ=LLYhU;;i%+IHgr&B3Dvj=_{Igq_X)0N`0ArIDx6ra_J ze08Sy?8lL><0(Ez5cvwG_?#WcS4WD^)sB2MK~vgOd~U3rL-&?4Wq(l0Ka2aPqaJ5& z@QlXV!_^wv!_N9RRFAsQ8e<69u=YmAo9yk5kbQ5Q7hD(Ft98hEdJg7X8Cx#ls_(Uk z?HYrnDw!{HFqV491ZMAvd^fVn-F&{@-Q3fNpJAQIsz?7tH4OCF;0K~)EFwo4vWF8G zSoGB^aVA05G_r5bb)YV*sNX1XJQ~*xdky#68)t?<%j}qgYh~=?x`FLC zhxW;>5ynccwqG}Uy*>2YBl?il-6`#UCdT*lI(W3Uo4oztPommnPucR=#x`HMDA$U2 z6D`!T*2aCUyjU&ouyv;LV2n3=IxbV}4oZlk-2fn8Y_u_rR-}&UbF|UO+{U7AJy{)~ci1V}qu_3C0{j*^h|YkQlCG{YZaIXR^<{;`B*9&mF$SC!YG69pU}i zUD98tZwbiWfH@6a+ib_$OZs_hFlw(m)V53VJ?=eD?hU;&&$z?SDGrVE$-ci$a^T+{ zjFLT8IseejS})WQbq#TeG|M&ZxIe~6<>~$&6RK-{FluLVaQK#qf#KDoyaU@<*CSH` z2AX4A7ahEEIN1|w8_NDdu9y7+sSC<{TFR7o_jas7ny>7Xoa%lYpZN@2&wkBEzX}&G z-59i?ZCL?6Cp+OtT_<}xosQJ%))_(b(;EY}nmCUi^|O9l;IXfb_PE;y7~7Wd;OKcX zP{!!R83D6CK4@zg=yU&~$Y+N>_)iZoLv|LK1k~H|uWA`8=RrSh>*A5mdf#Z&|D@cz z)sfnr>M-V@BehFDix!-6q|R<|`6~S@T87DWQU@vDzrr8-d=~8vl@s1ijj3TfzU_S3 zi<5I}LUVs;uTRF@2+;&t<0DRxeXP#wd}e$2r(;Z%G2-=Qp4)5p+FrAJqdGAEk3c7b6zW-v%J^TC-{fU^*vLAX2bZF;ka+CeBT7Gv;p65PiToffpX!+Y+F)1 zal+EZ@xeIEK`vnixi}@|Z_V;W1svd~-s6C-9GCkGf5L$1e#7@XqH%HfZlAO_(zpA& z)^mS?`-@4hxsJ~YxLO7V#{}l1Ut>-T@R$>cfy&bZJhsz`fyWOHz&xE8Sll(hWA91~ zJkdVD$K9G3 zcv_xY9JUA0SAN+?=npm>y)#0&_Q)RahLnKSVK>9p#(M{fuamZH#IYlG@6f7v6CWT!tNFr+1>*9jdT;_WZz zHYS+pgD#(`8wRb%cipJV`q5t7kukNV9c!n+HQxTgF}03U&RxMktmn!O=Nxl7rq;R` zQ)@b6YHdGG4qA=Q2h2}Xeb#Z~9rlcKu6Z>vXq~tGLqs#$T>hb3(EfGK2hEX~TE{-; zKbso2iS4zw*sAT`K`6ty^~RvJ*KS6(JG{~Bo#mnH>)fV)drYkh*T?L2cw?)b^URh+ zpM~pUx5As^+-o+w&Bz*iOaFG{t{1tgMc?+K{vEEyarpd`;|?=$uf5yI@jdoV(>ta% zF6b~L@!g6#hc_;Kyi1NJ$ngM<)y4R(Y)q2-ct_XCvC-as;JE5gOrUDxjXwJxyEnc) zCh!906?4cHaJ-u6v)8!%gL@qxz802RW4E@;$yw zKwm_z!#I=Ub)&r_kB`t zJ#^n1ejX;DUqw5PyZp8~%(w$$_+8zCYyh58N2)kJ>ntF|u9SY@rVJ+Jx|N??}mG_!x4DpJ-PU$_li` z1Oli-?M8U2P%e;D&0(wMGm;OC6=_f1ARTv-4d@s3_ zpQuYf>VaGaaBl5)o21BbWRCn_MrJLd8&=JGe+lFQ%zm0bR= zPcGm7MlOH<-{i7|xs*H{_>Np2{O@v!cEzEr)?iGa6?OQ-#-zU-<3Wz`Ktd>whrVl! z%lCVtzn#m_wJzT{IUX1dUq2?$hFm7e9K~E7WiH#8%lEz|m+fEIOOF*qE(3ON9NK!c zPcGjNIKGz44t)MvF6Dd4rTj!)TBRPyWh>78!*}HJ&|m6hB$ojh=TV(!`O@WyWqkM}cG4)5R-j+Q~4_Mkar4?5&{&49p_4$I?!#~!>Lo~jBy zvcnN{9D<*c?{O@l%V`E-T!)UYP4M?a-ty|>y$KCCRyEo$CJgz;YUjC+FF?C{6z zfOl$e`Uj&PJ=;-_ok>AU^MU)H`6q$KLMrnJ%=W9{-(i z`W(NwF^KF29Cd@e37ehXQEjf4A@$LLE3de^Oie;dTo=BrO$ykn6TGoU9A?ONIS)UP zS8v^56C>Z(j0PWLYNLWKUuk_pOG1PDaZ>}|Rz2Du*EXg$wmJqrIHor0L`-eJE%26| z_LhXLXzOn^;Sz~=Z4Pl(*uz%Sz&Ym69p(-`CcamzI|a?Y4g zjuy!=sc)OTrC*2SOjx#Bq9kY4b~8}wjB9M-ckwv}@#q@-TtCV?66N<`4E1cmIL6P< zagSlLhbiM)#`0#2$6lv@WC!w8JvgMVXKDs}2g>)GsR#Pq9{BUn{DtrF-H=|VH*%fJ zcat2i9%V+h!C!Z{d{ZQ^8>H@|yaUmemC^?B-CM$%@RJVYnHn&7v%Mwcv-vqb^w}PG zwiiAhYnG8{_e$~k9WMVMoVO~}?vN(5#NoTu_$=r9x5#+L`OF25wOk`VQKufM57?D_ zd@kQ(toLIXQ6185(V_4?Y_Cea?HIpUhhg0@aNQ^q4Q{J?#n*>(`2zY8xeP*2gAV5F zo4H*3-MI|>wOmf`lgn!4a>h4uxrw=~W-d2;OD=2vN-j6`$>q!6$mQn0A(vImrR3v< zZ^`A_zn07Oqrm8xkf#qYm$iRGF6;h>T+Zr~%Le3f_BV35gSl*AE`RH7ka#{B`aM^@wo0!XA{tda@{XgW=*C&^Ik;@0ak;^xj%e~Cy zzkf?E_x+VzzR@R_|M87n?*AKd*~DB*K7RQvx!nCXaM^-uTbRoOe?u-0{tvmF-zS%E zA(s_WcjobT%;Q_k<8Lr0CNTc(346<6i5r||Fy^XwX-5b0xZP>uyWr{3o`K@$H(*Z3 z=ik>mS_U4sn?Z6-5V_p$@DHlP+#}z2%5mgrkE10Hqj@h=hmZMHKYB}Xh$plJAatIcEgPU`yRU)hB@sJ z&bJ4#Ug~oC2ZrYQ(7Fj8E5Rfj#(dv^Ty{D=j&%tw(e23T_IQ8%VSC_wU~o(SYA|}( zkzz2xW+>W^(3=PJ4M{D5O<@*}U^<=3(J^#SXnB&R! zz(9EKsDqyeh1LM@Zk=J@AFsY2=d^CaIh_uFzeDQ(kt3|rq9m?&_@fSj*B9U+4q0aO z9*5udjLY9|?Qm}lymk;iAP7HoY#Y21&aopt-stcT>vaarddmzw=nOi#o&G5K?ljy> z{ZRkV9hMn&*3}ZVKF&L=QM|e{;P`QJ&>l$ekLq^$Dyxil$SJ4SRv+Io@+>^9sB_nPoO8zId$N9H%LwGNdpFwfQVQycyq>UH2LBt{c+us(<~002Jm@LZ=d|qm zwHj~2tMH#->EuCp{5J9LXwxsi5xoDP!%lDX&&OfRI!*ru_{!JdQNhlqjjop1SDY<_ zx5KNxaAUyQ;q>Eao1<__qn{IpK%uX1J`xr>TeBUK@W`=-Suft~Yj^7jVBmWsmWV-tB%puGj4y$@fY|;rudvHXZ&Q ztI+Y0>q76NCQn)~&kyT7HdphN-tc?rN$<&XTAm+zw?pa@*L>ywrR`nd;=1lT@ynh2 z;LQNT8%dY9EFsBn*|8GMZr#*z{Kz(L>a=Pz65d4Jx`~szwcEI6th%kTR#Hr|~~jlX_b>olYp_PhC1flu}9wC6r(yoBe*zIhVP@vXk!apU;QSoqO(i zpWpeN-~0TVv_08(khZ$WQ;6TYg`EV(gWor9^F0!}vIELq`&O(&znOAI?V8L!r6)_7 z;nI29C`g;A>@|bB|K|Sy%suA$@FeQfc2)dNdx>b5&{^G#=aE{#*W5i$#>D=V&>aHa zng=cFe^U2JeP`-++NRSMAK&VjkK=6J-28RU4|S|S)u6-%T4a>T=&jE-AgM??j3DP7f4nJndB8gNN}uTl@q2x($3#E}W4gU`&HtWAZ6&B*RW z+r52>R&o&#J&>Y%GAm1$T6K$Q6NN{HBU2^mNNh401F9usM7UjG!Jz6!@OPyo@j7dljPt3b>2hGNh*tjRu|Egr((% zwTh0UrBy5<58-r7Z;4+pqdV3evF~Q5=%<8lJ!ai(1HN||=LVBjycq2rz<$ri^IAN! z345foQvvQB0bh9>1N!in^l4kicjA;`{02VnwXOFTbw=k1jW+v10@uTh(4HzJ?c4S~&p80CcZB`l zCC1=}-9YO0A@&~B=k<8WT!XO9c!v2W@$DeTU|kvn4OqTp@thU-uNY$turBoNJnaxVvJd}I zy`RN5;Y)=6XJL)5e}7qyujD0feDsyTS(-P4{L&;`8LZKUoCYdPiE|3x!z!F#b);)x~X z?a(j1nhZGHm(>X~o=qRNm2LSwKTprU>n2UFAFx`whb?!~^Yu*Fw7uQ)zmmEW8dLsG z(HFwyp3Su9gMmE5X`fa{qb-&4?X2YY@jFRx379G6`^23QkEY0bHmGGyiu_s*{W(b& zUqJo~dm|cuPrP5|#hJd&e5gwYJ*%@mr2Q-F_StQ1r-AB01KmGrJI2*$Alkci1#7+j z7Ye_#K`R}yZ zk#%IP(yo>MxJdt3X=AVaU1=xZBcA`H=JIFSm0dE%cTtuvJ}ACv*(IJ2?bGwLkuAP% zByHnZH`~ zSZ*)M;rDunm6x!9p-smrQr5-AaZ0}!0n!B(v0T> zmCqDu6zW!xew=0S{5>^SLHZ5ypZJkynQOH0`>%p$4ti%Q;eqEEU?I|tesfO|KLWl> zhm1>c@FNd|wX%59)Kh}>iA0H)6!?Tg`7_^)nNiCeSj(!l= zwCm^MJl`(pS{D1V!TI<6#I@31))Dpj8={@}GOZJJPNEK;owVh|`5&hrRZ0&RvYu%l zosTj%$gtIf$Y~cD||jnA0o^r=gylq zoK1JESZ-*Re#hPJ5#X=)1MW}qOq(|&p}D&SU-YQ1Xd0d|OE|+8@1~8Xdq4SGkCtDv zolxSQ6#3Fmc>V}Hqb}%?(8e9Y_WNGce*^0u=b5X!A)L!MCOKw#uC>$%8o_xuwM7p_ z9!(guk1xwg8d~lI=dMfePu9%V++Fic&K=)rv&wI?TXS~}<2wZSPQFT4J_~a0uK6mz zd9=n5=EtKqR_i%`r7<;sU3{)=n>&o-6zGmq(evHh4+l=$FP;>%1k%9kgqH51y|GxY z-TWrz0^c?;AM5vqF&_@+yO?uI{D3p})MOwPIvvpR#_!}jy7!RA5cZMam%*o>oNJC& zV4SC1@QNw4Ph0d2wukb)_zv3P)FRer75NwLj+QO#kB0ai{MX4*J3>E&Q*GcQ0m~;r zGbGu6!rVlyn~8NeiTr8P5JjrSeWe*c;pxxaV!dHb8| zJkE9QasycB_sO^_vHqm&d($}kE$8OHD%=nhG=eVp^eo2HQ0cn_uIqAwMV_CU?0dE3 zsdir`ekB|L?lUI2zOl_qY#ZMw;}H4N=S1X5oXZ!II4Asbp4gi6-ESxyDEt+#+!wpo zw(kq@B(|LM-QVN4WyNFkV6Fw9VQD2R4Lr+BUYGse{TiQh+vXhUf5E;ku}|k^pH|a- znq;3=1sq5`x18?N--veEryki~!0jp3r@!DgzDIk6%&oLy>-=#};@q*<1&+;n9A{t- z`9_{SJePR>T(IIHHYBlRHq^kMLLl`FQ4^`Kzin~x682j2<%{I-yukIxF&7yClcqV!c( z`(pR+iZem+tNj?~BKk36*Tt9hc-2y)qxt*v#Y^8vjQHrv8#KKJyl{NTI@(X(Wz-56 z@SL3iJwbb8@G>16wpQ#KZkvchR3Fhs?ARTBcI?I_TML5kVVsc?;Y+M#d9F** zZk=)GqSAA9=Hte9vb7PRq@lZ1mzt&~G1Ol;sN*ZO}bsgbNgJmdkyHbEp?}-GaJ` z(sjvL4jWh0<#=`FOWBFrKW~If)R~iYlQ>`8LDbcNy2@0%t-`_J6=m}nuP7<{CHjyx zDB@8xm3uL|D1#o{f;GQf_C=Sze%--(P5Jvd1Ln-`F6HMZ<;uZdqHmId`NxUBChl>0 zj*vfF=Xs)YKXs+ZpGkT!wz+~Q`MBjd}d>~ajiQvNkc z9>sIMEsz?_rNs|Kv^Eh-s;La~@BJq2(Cm-vC4Cshxsx|<9KK9mSM0^u=9f4xf*;iz`x%!? zv=`ev$8_dZups!51@RtXxi9cL+BC$P$2Ol4Yo#}SA;CPdj&`|z)-MSEY{?Iwl6`D^ z+T(|j?(YD1ptBCIx@OajPV}aXsCxftz^drps4l=J@ zIJ2G`w$9G>`_3$sYvb90^So@~u86kS9NF#B5Uz|p$G9!K2$!>WwN5G;&}cJSvEPM{ zYWdt<5m%jINRPNkFJ}7uU93yMl`Uh5G~R&pAoA?S?`!#cgLz&MI+`nDoQUUQWVeW^ zLp_$H2kswD$MV}nI%LGU7y`fVy6Ws%HMGKM;z1c3t4`4v&xw6W*_*`0H}uG{aldpi z&-|TRaaS5~O{ zb(Cc{Sl0`p9Ra%=`y;~t6W>3~_+H+3>XG>^zCUus`Gb6nVOQ?Wi_pcR?FI7x=d}_q zz8doVWEmfMPx zBxSDM((Mi&n1m$Fdd7rAwqm5aI`!( zEc#{o+P#tO_L&hqdOlnZ8u;6bTj!}G;C>#srl04%g!#Qa_>DO^f_KVbYUZ0$+Uh-y z(6588y+ham^teZ;Gh1jDx~CBFRhxiofj8>gRU8(aqq_tRsA+%MmQJf26g-2NgB;dN zoI-sre=jwsgfFD0+vhhv=kHPYDz^Fe?3=GW5i@I0#h$AbvF@&jJ#~`$eb*-guhaA$ zlwIRI9Pct(UZK8k474-l*no@RgdNVEXo_7P-;>hDh1}Drjlz&%}~WJRFOC#Q_4N1Ny0Aoz3l_AV>(+MLi6*Wa5o;)NcKK8tVh zrr0w0)MalROk2Kdi*B)ac5lzqW7Z8zy>oqE!qkctjbc$Iw6HDjqSA%lBzW9Qvjf(- zj--(H)SsdJhjJy#lkonbW%#riJa8(UKN zO3==W$OHZ)1LL_oVn@a)+n_vU-PWpx?Yep3gUU*bxn0VHE+;`NP@c#BqksQ{@|P3B z&fv=Vz_%8DqkM$xc7x=pX0b-8B+lBfR``{K6)#k>;_YRH{D1p;Y}32!Xb-f2pQyR- zL{Q7|^ezcKn$<31HP=5RW4OKO4ioQ#F6BO!bVNPqeinKHC=yIy3r$qj3+M zvCh4;1b#DRrnDzs#++ilD3>AMFr-D6$IWS*giShU4{kiQ}>CY{$~oYm&dc(KQW*9aSl z8Ut+>qTZkI+9bXkwH=-Q`hAR3BI&@tW&8>3mv`gr%jmXSHtE0a60e_25wCx1dS67l zaIeEy3yc-p!g#734dGHRo?g4;yGb|vjga5S@riibj5DO-77eq_9vS~)h;^M-=k5)M zH#di@qn(|Wi1Ulc z_Kp7(`^zz7ep%nIy+gU*_LY0wSB`V_v3Dr z-_3J!yzIs0Y5boqp4TQ0zPL?>PM~hbQ&flz?ZLn^(f%*gfx=ClSUcv{T)Avdl z3FwT2+$$nh7kEAHBai2!4bZxRDc@L4-&hTf)z4pG3{@-}-!J4EhnY?pMseDnp{h-9 zd2Q6L+lqa1!O$|-wFq&8X+^b$gCcL{4W11V=CQJyv|Ep>)kn4Jc(bcbf)61*b2{k! zBI8U=Hj_6Lw!}8$?MyVw*e%oGeV;8(g{SaN`^sonw36wd5mzVijdhVGW1Hkdq#aKU z_=4KUlZIA&P{x)k9{_G6{k3RlWjuEnGx+&$g*6$sRI9xHt@KzMX>-zKO=|3*(W^+0 zbsLw4`^~OfR-4?r#z3bldJO!ay(aH7sC_tLhdmh}&iKQdpu^U2=5EOzNN-3v>ZRGF zrDdZG&;0x;+r5jn478<*p40L$AMYlfr4FIXIC~3dmG9Hmk@};#yS0*(6)hyqK$+Rx zf!Oz-|7Kj!EVO~bykB#hvO5^DTRKR?4_P%gk_JJ0|BW$u*Q5>D3hP+4;uW+td;VKj z)KM(=XYEgtc9_05wvxOz_WfsbQms=5Vk=&ZppNWRYqTrOcy<4Do6tkVR+Wx(6?DyC zaa@X?xndra-s6h2__lWuTakRL^n7 zI+uHKr@b{ENyl!h0uOa$RLXKWKZn|cey8@`e9q~N2dZVx=rW!({ZG+{FM=kzt*;?k zOg+h$_C*5SMm%)3+0_SRy!C4An?SGL(mad4By26z1s*e%8!e2Uawtm=k@qGX1OzNx z3=V58iKMM%FWNj~Y9`2sa~&98xHIUOlMSwb-LLJ77|%AwOJ1O_3(_bjpgg!j*r{L4 zodzFrI#Aaa>LBVBq;2=6${ zYv$V1`VF&K=oQ7;avk}e6Z%m{$h7pDk0F1?uywS$L)h+#ar~XHY&L0xaXV6ex)y!v zN*T8>-nb=Vo3Xwf{C&o#$(;gz@nYPOp6L=Y>Xg=&EMg3 zTJgo$hfna`AGg#e1Id22*1ZUdQU>-28Mr`)Lv;*E=Tg1$F9bbHGz;=qGK)5{z#ws72v$4tE7y+w+_JEcrV)F@IqtIz&CQ-)) z89y_FaWioil8)ZNGEC#yNI5v))$dZ@?_%HYAb&6Jmv>Om=HB-$i@zz`pH8=7c;ES4 zXP;gWIQJQ@)ePzZJ~F&D2M+x#*Lk~+#J8_2um^8PU0Zj+tYSa*LbiV%LL|#iwPeu}*)yTjVdmxpmne>z2B1$_Ys4DjKQ0*F1X1 zfO+Yb5vB89vf`mR`U-Umd-7nrNgLT+n{B@Nr;NDWIC|Hx(7VUM(`mosyIZ4@wB~q2 zN}Dt{FP|nZ=}J97I$@$=^Ku;jsBcM~qoyum6K~mpR8EN# zR)uryMn1E#U%j}5?S_m?EacAmuD=J)+%e7kT^eJL=1}Ir@}o^!)jG!Q8d??WsEloX zpJfT}vuIA(cWmpx_HXFF9l^kyhItjzH`R2 zk3!mW(iU9ErD^xUv}d@Vls!zAXD@z};33X_0BwYlcDTZShk}AD7iFJPFn4>}R@~9v zc|W}9`umQ(nsC#7Zf5(dx{O7MGw(VH|GR{(5@_eZ626US#~xibh#M$_k5>XGH<2fl zek(`slltRb+0qYkR~gHaUgkYepq1Ok4K3#nKu;(2aCTVB{RK6KJTZ1*3+M=09P1>l z+ie}aAM-eidW+IB)?FDwucr$=9&HDADt%mo-&Ydle!%@Yj(n_dz^XZdv`eU~>>44H zen|r#`vCfJo9xHVf0Z^bXCo7;4DyyBojgJXd0lC%urt}=yW;;49=01ay==&8xxZV=!T_^7za!^)=g<0JC5O5_^2WopLT{<>JG{Axb+P)* zb8fG?uL|eX?yv24^)=v!C%zpQdc#`()Ssa4OnLnVSmok569c1Gj_O)cki_uPTmNfi$(-Ic~r=Ox}`k53g0rAj(o3p z-{k(v*v+v`mc_m^Y{wSC+yBi(S?n(^l*L{dFN?i83Ho=UDV73V{n|Ka;)R0P-z@BR zh5k^)CO)6a<2q+w^H*u(Gzl7+b}OfIw2}#NU*XPQrrr~6R4-yK@%}&f z9lvJ>r0k%I?VibtmQ2h1w3{iTf4WBx4~zRoT<`>1nZVni5vGV6rH}9r`Hf>>{X;=5 zk5AG&s?OJ@>{zNZCtQNLPfggd`4idk63qYnIQoG4jTpgt6e|)Tv*@n35+`{iE;{;eh~P}oG>DfDO(x)M8Gkh&20V0DYV;H6uFlED?9_v z1S8J0Omq0YbRf3Ox$al@e5~5cf-vdzL+&W4hi;+LTxC zIZO@hByk$z@4WxAjx9lkbXM*5EF&8|idW)Swejg|bhuF?E=56Xg?B6Lf-YaB{ z$KuhRaB->J^BGbO>&iP5@I?B)m8SPx7I%YUKPJm!3yHGW%z9aDI(abmoy5V|U#uUD zy|Q#L_UZuk>UcqHaeQA&=;Z}%f8NdH-sFB9&v!NY>8*MD{@d}beNTTCiN~rJYt*^o z`RxK9y1i!Jcn85QXe;ZiO&rw#o1Xu=N*v|Ds+Gl)e zpJf{L;@fzEQt$$YFgL?E4@*3LUh2pdp@rS?UY6^CezC(1+%|kjmXZhgaIj_u|efVY2 zrx_{xaD2)>{7QH3=3lR&Y*)y2&V-zdnWn=pcNRx-rkf7OCz}qx;+5N`e=cbcw6t{w zYRCP$XX-+tZiMn^!Ludx!RDCh%17<5E!spnrVm7 z3HY1Jj^{?7ifr9mjIwesOCQn=@m<T&>=||7_8gsO9)2nx&p6FJ5jmFfLZOxpJkED(uy&gPp z#scLh=OdpeRWv_--z(%9=Og#mlKwFTjw|hu=SD8l9~C-T!XCaQEn(|Izq<_H*GKtm zkTRDpad(->L%T(Br(62F&F|xliWcB+A%he6T;a4nQxt8~uLLL)|s@!88dxwqxrmbnYr z@hYrg71o$C{2bVe~U)h&x}K1U+E?!M_@`!rX7w z>-)o`w@sXRw7UyjK)quQeJVg#G^ET?JCgZ@=5RqzeJZ2hiCo)R7s+_$-O=g}!1*}J ze*Rs~uG2Y=-Jxqa?R#8%pi9f*9ie>)N}-fPRMA$aQsETZHwT6>F7l!)M!2%ys(Gc&im;Az zwEOq!@MJ|u=RH!D+hhK8;rklztdsjGG-}rbX;<#)h|%wl^4?>{Xkttz!0)dw7+NXd z_oIMa`W+twetWpzq+Z?m)MS3V6g1Swqfa?Mi+{aS)e-GL@veYc& z@8EYXeVYaD>Pcm9;jx|+@o_btS=eJ`>&-&`*GS$*&TT43$X{i;qteTep2s`e7n&JY zOT-?!cI|FKhn6wVifR|{dzh|%H}UsI`dgjvo5SC;>2KA(Zx#FvKI>K5O9HO)kRAx@ zmH$9mjJBBk&VF$1w#`XKJMCtq{>xlL{ob6cdC$A$9VlEEz+WHdINp4v+!bv-BH^U6 zjj%eFwigB8TluB-EAPZDS1?rrKJ!uU-tsH&;jY>tY-eP@$Rl-Z!DW}Y8_Vv?kJ!t0 z?9^9ocC01o6Pr7nN1MJXL2s_uvCbvozbWoZHu>!Cp1%iqzSXvuavb@X))U@C9J zch9F7pJps8dCW16`Gh>ZcrWf~OPYzkf zuEiRdW0txjj`0T$Z*KOPE%6>xq=m|(+HFb>QvAfX<3g8SqDlEcyMFHE1@LnT?bDaP zw#U&y-({fRf5(2+s61zkx+f=r1EvCp)}PrM(UAVySgUU_&kaH*+;Won7VL1@qWS5|U)tyD%cfS+y1CiLJcX*B6MEf~tKbXPte4jR zbbm@;wzW#$0w_KAK1xyEzI<|@k~ZC%1phPVS5yvmYD*DDw=tzt>|>522D>?YxFcXl3g zbPf8JrRb9&?_#b{vK7##%Yx6hwH)mI#S{A3Rpia%o}aKaz?^*xc&M-A`7ZKM7^{)8 zTLq2BHpJOv99>5nL6j>`x6vxbe}m%DFb9`=tz%lZF~fN(NlHCG+W?HqH<6GmPET&CAmf5=b<_}OdGu_7HLN-^mWy3HN>s9oBIE+FCa9=BhR-Q8)N% z=g;xXlx;k2_-&7Pj?^hQXwvi|*JydT$C!DQ@HuJ-+1QS8TMM4hYsL9XI|J0W6THj5 z$=dUmf&UIso;Xo^{`i13Q=P1JwT)WWz<(zG%QtFi-%#;s^s8)G!pMGC!N@@|KV9|L zh&WtY$u6;PW*qw8bepxipAF13FYw+PtPA~P(8roKW#0o(gY;5yiRoxMVqn=do^-t}x{-0^vcJ_8z5757(qBrO`-SuH{ zC$sY7C_?_9@ZB$2CVBUA>Sl`jjCdw!r((}PW%2IT&FFcTy5hV6(pTr>73j~>#=h3g z)w_j!muHTJw#w%BZEm8iGW6@8S=V5FyyD6;qGHp4p2a)y zUHaJU9I?VeE(d(`E|h&g*7aS=-$C#IydPEirj>u$voThFo*5%%Dnov&csJV|kTGoj z!&l~vDC26GgORj6Vmps8?DNqAJyS$p8vH?c&}w;r{CK}PbM1x|FDEZfz8?H|=|)p4 zZJw*q_Ahar+I%rl=IqwXy^NWOJc;_0HjDQ&_0b*YZcFWQb0dLg1M%SJZ(}S@hxb%1 zvz`UyVT?2X9$~+(OZTgAz^Z#-)UNAI%L%$}#5q!SM%>@%yqj_YSKXgICUt0>-xZzmEAouJRva{tA`HH4!Kd17)$ICBuEM0dXe+c{*BOLGHQ>d3o1D*|zeJ_{uwp#)e^(-^V9)A1p8JxQ~4x zte35#e1+<7j@0dxf6P}t2p;z?lt08L%IA4=iut^cbBX--j@#1DR>tw^x<9O$FK}I$ zx4S7^{-s0iuAV&JClM|F!fh$Wf(R-FaHL0N5HZFV>GK zov_N2d4sf*gDbX%$rSNgALUX}53r z(>98;G|2ubJ37kF48Yohn9qlL%-Z9qpJ#GW!VVWt*x?+^gR1z%i^@rF8u-&vE$FUq?H;|+}EQug@-()b(y!cO8H>U$9Nxj&-5-}z6}cO3P7;78Q=Nq>F*@ov-e z1qZBiCr7Lqt=rS_8PPK8?>wD_v|Fw{)w+54?-JOHpymEt`mld`mivivrE&Zw-QmS4 zAU`Yptv@|0&)Kq{@}09HuG7XnLJuut#Jv!aG2&i`$QW@iM6zpRn=35u*%{K0(yL#@ zwo8B0{5t;Ov}`m8UcbIq%@g|ldAaXf9$GiG@+Dj9S$Q99yvbo7>uGm9X*=b#^_W1~ z8N0qZh4&YEH=ex}8zQ7|aoY&K&zOu;$oQpYIqlw_Z4xq0+B{~=qkIo|+qovzlhS9A zSH56rEDMkNs zZ{9pvCDY})lwS1K<$4is;w|(11Ll2eyotBaAqALMzm1iP?=Z)m zBlw=4UfSIG@G(B2&R zQRx$Mos3!a`104p-D~k3iXPl6>A{lq5usaueEGNcMD%qnykqHJF>d-ymkiZ98RPfT zKi0j5@0;J|0;W8>lIcJq=UZR|=CZOU$hcAtZiR|8L2@*5r>!!sZG11lnimaws1 zWFEg97Wu!?q5O#PeRkV-%60zK*M2tY(>r84gI@cz-SwCA`$cTi$K|&NT26Kb>TbVM zA9vg3&+m@tlwT(TTIN;CJc%;FE6W^O{}E-Poq^idt}OHJReu>zUgVXlK{?Pt-L6sF zO*zD{p~<+hRy4OmpXtSzTa#8aTiNg2Gy+=kfQlyvdT4OeKGwfsMN2(8Y2Aue*GW7y zyktc~-Nwx58KY%%!HO0wTG0X-*XeStr|Sjpzf7<(Q)RXt{4mn*6#n?J&5J7EPhU+p?bDOz5820F z8n(`!61=O=9vvYd% z&nw%Gy(n$)Lcm{+uo1=YP8mDL&7uCY4S8e?z|c!_E=oS`#S)cgm6*fd@!1Auyj50S z@{8}}7k!mA&chlfhOKkGt{3afNXs9oucN$F#Tk#x8(PVN>1c{Svw2@g!n2F+iD&Xo zd-1&|mCabuif0@rkCiaAtOJraodo>6mNbOjaMgrC8I~UG3_AUI7LgyAVEaAs981My zS;KoL+L#nF+R#ThMiKKw4>|NHAC~ZzmyWUCl>*;2i#91sD<`f)J9$|5HMBFxyBpY! z)O&=UWS;9pY>K+bx}k+$*q_o@>#vNrarJrYddS-sbF?QHc5GtaoNnK|%}`cqM7;Pg z#Yzt+?EQuAs7v@$*6TjEzWa}=U*3o^SlF(H!oyEdg#B=HkZ8ZfK~T0+WbD| z`M@I1L&YOzB^q2!#b-v#CPfEl~W|%+q7mz0Cg17+P_nKH|mKDO$iB44Fb#NF2>`xjacY z(?g6a&2bf>j&HCI&-R_=S6R+dW7r?T7~Fj9@1oYtH~*Ane75bkjQPd@nlF#K|1PDg zL^~(igEjRk-gu3~)y1c|-aKO_h5c>pIh-$~QhmzGLG3Cp*Nmn0s}H!hJvCi|0@( z`yaaA)1TZd{M%Sp@m*@)i1?{oZ}h2zeZqQk?fW`JEV6Jh`oq{8&-wbX)2pv^%ig2- zmYW1Wc`kE8%{%HVSKprLkoGs!apfi$hfdSJ=hdlXS0Y9v(vGXW58AWq;jt~dtx)ia zvj+Km{mG?0+ORn9Vr>m_Z`n+9Ra%#EE{HUfX=1KLdbqGNa4FPgzj&N$FfL>?#SeA{ zwIE=zlQky;;0QT-TdEH|R6SI5)zF8+h9+-SWpRS`l)4ab}4#C{MxE z?+6*8)Yli|{bGmb&mP-cW3KcN*g*$8oJu*XguhGmpab&6y->;?pHJ6l*-d?pi~)JcL0{`YBNRzlXYoio z=V@zQUi7U?aS!JkX>B~eCC)28>!tM~ZJ$hgo@p3UGvM)Bxi&(MRe^R(R67>dCDgk4 z#(G*WDd^0rz>Rw-ZSPln;_cz4_;I$|r(onZ*_Yp7TCYkwAk!XU+K}CHW50Rn7S+EB z1ve$=BXC~PwCZ2NgPS6WC(G0Lfw9huKh}|s!+*8@=YURl%-8>)_Sr{Pi5O_edz+FQ z;``llK7}8ACi-{?X?J*O90&RwM%sIs_BMV0itPKF4$~E^bIuQS`1n}Q2F7m-zNDTn zRnqmfA9}&f>->(zqBcz zQl5XrF=}03pR^q9S>x=Y}7Qo|>U-oHl9!`bARLLz__W z--~l4$aiW+*iz9}i*ouI@Yd5M5rg)~(Wg?^@*93A?}Ly$p^-23TsUFj&RCncv&X7Cg0Z$Fz|(nkg!_A~#guD)I?nf-GaM+-KMk*+6Xp0Ud0^#aO z@P_n9j`m( zWkl;SQkl^g!lkI|b>_pj71Tu?Q?R?18f2Z6@g*8tFN3!znyZfzwir9IcvR9}-(y|u z^FZ*5e*gFMy+wyN2hzT+Wml1LW&s~x9*^1|JJr?WS zhf)7S$$*pTXC)hV*^BkQGGYznrk6!j7_&%-hEeC(~*vo{Yf<@qYv$L8Fh=8hr*;K z_Gcm6rrcJ&=Xv_oTKb0BVt!lLhKlL=Azxm~-K&+&%pK|U;AN(F$@JS~9R)umf8W8_ z;r5G+v9C7PaXSCxLbAvm6nBb)k-N9E1NtS&X!)%2*)3G!<|k z#yU8YSkJ}AXl}0+&0TMBg80X}1V2nUsJfSDI?>=5OK5wk!KqFK+(&8GMm-DiW+LxB zZT8n5Re8UQyqQQ3;lDf>&G<9UALv1obAH;6G>;3rhk`NQafGN%c7JA1wYUAT^2q$FFvN$rz4G%Gd`f!N5tIjk>kJf z`R0`QENJ0qPc*L*G>*&o$&8QQC2YBbEEKrOiFRvwSjr!YZ}^R}*ORs!FwQNqy$Qf7 z#NttF4Fh1kH75YN1geKzgq-MJjT3}*vH9$$agfIPut+x)vKRl zzNj2;Je1VMJp3&4^~!v6wDlX*>qNV=R=hkZ&&_+7N5S)V0S^y@uD`Bb-PeG$m-~fG zwt%rQjXs(0Mb)?EZT+G@b(w0fryKd>4Z=^JayUckV}du)eopBOo*57^4GI|dJtXel zvrt|?x16ZmyzGsoPw26nUiq_>cd9ew)50#S-Zf_G-OPo0H#muL zfetU9taowt7qle;ZdA?RgNb@KSJKu6dpO1c6YbaYzQz|Ho90>u#9A6C^VpQ(dcLba zC*elBpXXVxI?p66QgGSRKhmB@$bwN{yq0uFfrzOM+Dhxt@74?2j zy?FSP}{Ew>i2UPkORO~`?(h#z)=%^LBkN5_-hw$^{ zX<^rte?QA1|L?1M?o;ni@%=Vm`93@H0aYGwo&T`Ji!!cxlP_Ptk-AIeD`h`bKH+P7 zz?bi|nYu&e1D?%~sC>V2m44su>-UFLK5<^vD4dIPJUlMW@%(!vPSt+i>wk|OIW#WL z%lw~G-|kbk^P+68?%ty62aM#u=d`rrd%uUX*%$QTM%Dh!st!S~?p0@UzZtndDaKoH z$fFZLZ&u6!UT4HPBz%wZ2!A*mPokck;{o?Lp8J{BZGY{N^*veR+j9zfQ&o68vaooBbybqu$@e_e@o9Inz4qKl#;mJW+Qx+d=y8@w+;Yg>MV# zC=ml+mU|z*KOkj%Zw!fhb?8?j@6Hl^8Pp>Y^aXrZ9(4i0@p*4BonE(zON54aKDRqCaIb`6qt9Zbi!u}7@b z<*{^pn@UBiVQ)}An*Yz94+-YxDCcn4NJUe2Y;@KRS56bBb!!ETlSX*#H&c)CF86se z;@uB$pNa)yjA||OsBZ%GR*UiLk%#ab=R@AtJl!AKXySb;ir#xTDehU%r{7Jrt87GN ztd%_4CsH=ClQJgu5&6Ewv_wC32kFy0k8^CTA!5ul zL^200F$ZVpi!JqJ`KOevt3~>1t z9iO_}o@Xv-+J4hDme7|zftQ7?;v4ZH_!uK=lr3R-e$Pq*YoUl#TTM{ ztvCbhEt$~HLG&Xbc<8)g&-PL1#~SHh;21()AmatD(-zX}6ZNJ_W|TQ3#*+K}AuD2d zcd8=)WjUX@ zQ=rcu?NajN6(d}fvP8T!_D94yUc$QdiMto#B?$?y-)&Fxg;{`SXBlOL@7#Hf_YXQDtPw$~knbMpGLlt~^k@4vJOUEt<*-k2G4RK)HSV-Rx4 zJ>6;yJ+lABGbZnY-oiT-QZJmh+b5UJl=S@;4tl*^#*QxFdM=`_KW=vQF?p`lCCq5K ziW|x__KSCg1cUVVN1s^+aGtB|6Us10|H%FzFJt^!gEFQXe+SfW&{BEyzX>W|d3{6K z5WU?T?vs8s^L^&I`R=W`%w3auqTC-OjA#jXJ=#uGC|PDL+nTXbxeAsmiBl-cWegW^ z6uF@5Go$C?lqF|(1{_1-l|sTYzq8M3ZN%MDf4qmWd~^RX5eSznzv%2SIUe!^natxW zW2pC1X%AHgSjl~vHrsDE<`LhRvG0ZL8TS3^kliw$*2m@ksT%WG!qzG<=Km$^WZD?Z zSkNm0!sfD0JVp4-eSvpJ{}}C@+SbnVsvTFg)0S>W-d`d0e>uwu-7yBGo{#N4wY|Mj zDX$lIB5v4Q_Zq2tQPbz6JO^|3dOkK+o{u>V^8C%I!xJ!=Q-fy^&s}(i1_jQ@slHmg z6a_G3KKc z=%-?NWd^OItfTyDXSlL0GQD{pvLjCpTU{Y<&KEJyjM=RCW;s6=&+zOYCe6rJoJ3*o zZ$_$xO&<0x^DLpo_jN3dkTG+qMy0qeTtZG2JL#h4{(q^+Z3AztvcUf$5Jazu|?i_Lj4(I<)Y0> zUo1zVC%cCHo9VQn?r$LqVq!?ZokW z5^cm6n;5ezH^bkC-*02=3OI0{>)pa3IsXniI%}<#=er|f$brxK2<5TkmQ&qlx=-?4 zpnbF}?z#o-tb;|9bfLIADQTv-M!XlW%72IHl9{Sj^zG}+!&m@(pD=}wVfphH;##}X z$E58ta{kI^>m%aUunf|LjMBemX}e2d7rsyE8Z`ZH*$+iS?~rw7-`-|NGI5Sju8)0^ z{a(IL+0st<`EQ1=)(;`0nAT;CX!N5*>N0Z9zf(W({fqoQtBbf+jNf6aa?iN+j=|V~ zUG=)f zgI~g~g4sCgd=+)xzYSjB^ETtXLyh;n?>yd`SA64rPL4Ng@kfj|@HXSU?rp~FqRzkj z5#u%AX1vuu#{LXoe_riaYM>+jSLeE;gz_hus8@Q$9zS8nau<+jY0QNBN;(?BS##{egJ~R;hg8X?pSPR(#8y zARI^Z*RxtTVIMIk z=0C;xFO+(N?0W|qQU>FY^fw6G)Et?f`L}JLQ(HIRSeCGn`FDJuwb@=&v^S4&GY(+% zd^Ci0`m1TVPPe_oI%TSLx}NLAHS+W7iYL1Q9PPxjWxTT86t zAigE=Elb(Ll*=`8)EWu@a^YJp*N8Nz)2G(xgIt@5tL$mog|F)IpptDdHV@-@VSO^c z>cv*@;ucMUzUTct?Mi3QxIb!-{XoQ}*JZ4zn|bHFmAXPk!FLt&W`XsK-%)M1+_##r zBUk&jT-KTSak+2b_>5Ychxk4Xx>WAlxW6COsvm#r+kf1*LDql8{Oeh-Zi5lEN3*`Y zeUHwk_bAtXg!AXG>#b{^_0@M+^NjSGUyAzHd>CWDX3+uW)#mJl3drLB_VfUHKZTXw!aD9EECT^lQBTu zOy#F;%J>!ZZLr4@Mv8exk=HBtRe`H)DTk+TbVBC+3VA*LR(znB|4VAVUy%383LZX0 z+`UNt(3JPHhV5MAch2`>0 zFCLV4|Bt$F)8su*%FZPNXHtB~irmMzPTpOcsOOicr=Y%I6!muKsh7YHXD6|)i8}Xq zvd(>QD&Rh-^sbJWW4!zBGB26O`wISLe0BS=B=6vq^jki^p^q4(ZvJYm zhzn}+zEAMKapb)&w$RJt`&Ia z@l~W#w*oi}@ea{0!+ja~P5@68F0-yiN5dRPJQ*+d+q$glS9(Dc&&zrqWIYE(oM0!! zJ4A=A)GNgENi$rz#CmXMFXFjCxRX9|_LQvW=K)874O!36u^#Hp5`jo)QQRTwfF92L z#iSX{8D~AUZf+9K3wk7%GH~D6-lxVEP-FWk|Jat~*b>P1e%__1#uij#3vL_R&AzeS zSBiJ*dFn1$&ywYa zl<&25fp93tj58?};=7Q&=++-3v*<8db7a&e{8>*Vta$Zy_@g{V$tmLThKR8$ z_L=qT2`gHRy%Cw+mS5fnnvtn79G8~yDEL#H ze)HUJtVxcWj^RJ`{9Z?&3dDm?d^0R!C@;wScmp?~PlMLX=#b^65@s0lZuepDhKg_;i9MgPXlDg;s^~@*qW20lXGb`^owV&htq`q?RSLG6X=el5i0%bz~acmTL zcb>kzDEB$~_4>-aTa~-OcXdCmSt#bsS?tnlN2Sf59p(MFzH$dtxnaJ~QqL~^!mWK0 zj~&N+K0w=dz*&HI>4BzM=kIwNI33>-;(onjqt_un;PJ=}Lht0PCUmW8z=|xR&6cDV zuG}DgK)b+oEc5WVh<{@hsP;RUw$AqD-9}cKtnc^*;BU6iu~6^cpz3CF>0_!Ne|lZO$4;UaXEj~9bG=H#yqY^b0@_fGM81`zs7Xz%_EeHHVJvavC(eh zBJ#&W$pCHJ?CZDgTNCqUUQ}g2%6GyqV1hDgbI9r%?KdydAFBf8>KRAWSMIy2-2Hqf zd;=x|2ZilH?dYI&F$mb^xm^mLu-sSfTdLfhd|#0FCkBdz{(ffkgnl#xILt=5Ou%7= zuiV#ExkDZtaxYa0{e10cXW(c#;1Kg=Z2%5)edWHS%I){ykg-em3cdTxXs>zH0UVY# zNZj+UfW;8Xe6~l}p;-&OFJwjF@UzvlP3iRJ-eOEdvt89)#x%l3K<%kf?HKmd*?QV8 z5UDw>$S@bqyo0n-7%!L@v@+u@=Ct2V?rpf4%rpm_vkSL|?T&}1xJt27-0&iab? z`&rOS8@7AIf8P-LUezhv?IkYs`DQ-K*iz_6wTv&7@#cUz^K!3>EhX;}rrg=Q+h@xx z^stOQp0+_DJz{kv%ya`KRJBmSdJj=q)M}x27V#1?kl$}Wq@Kll-&;n9UaeQjO8_q zX>|$X+GvWcqb~X)R*uPWy-)CBFGSvHTs|MIj5mj^vyP|l*s!lZwIb|81dWgdJet{V zo+W(T3|b6iFUAFeJz4;U+YdOcQk$5_*y%ys*~DU`p)FIVi}(j#I{ zdtBbT>w0q1CF8&;!o?!yVmRnjt{I|ywd8HCKQ&Dq={a#;W;L;Y#zppzv`%Oi-)Rf! z^>3cO3eJ4`nnZiT)iSo~`{WQ@(wDsaah^aK3Map1iNcqVmP(H+rqTJ&x7<6dN>o`3U;%9_~yk>iS{@;X`arYlTG?K+T~Uf-|$`K(I-&H zBxoAt*CXhTb=j8(`)sXp?e5miGiK{1;}nnvJyVy;06u*1*~V1HRGs9(Zj5cdzV`kU z>6PQ;xduR+M9+uIDnVCqZ=s*ZI~wAEbm;B*@h(1_w_;OF9mQDJL^c&{r0nT4P@}1x3>MrK+ ztNT;>Xzt<5{5IUARrch^E|1p7i!lE@2Of^T5Dr#Sp3<|mhjq-s)3o;kU2%BE_(U^h zo~|8xjGoGw4;uG3g$76 zTlwAS1H@z9an4UJpHp|Gw27Q>DEdEBTQN2mC!OE+&_3rb+FyzMjK@`c0q>KU$p4hH zg^&IDFR1+QifT_0eg^B~S%8HH@cw&z7cma>zyfUtHuh^l@I}F-fR9Ke`-k`a(H^bf z#;Epb=2x)881^~q*c+=2h~2w&JkVIpWSV!1iO&^YIeYolpB|?5jsBQJ+>@y^YRereA^e(zDznx}PF_=--| zMzo3Ah%qk48LetWy&Q8;#O8Oj5j~Z`C;dJ?4;Wvn3kw<(`~>%n1(*#2=8tShJ8O%3 ziZtU0<2u$ya`{f0ZoVNx{`ld!hKP6XU8#z5RSx`BfwQy{^g-1a{jP#q8E|T7M4rc` zgTkNiO%eCHL*d#AE#q=$p!P}69&Jir=}hV?&rQ|JJ3o@OPUg0=?DDYHbzk~knd{wz zeSO;o&Znf^92qJLm#>J}f5w?{`}&UUG4Y1dXVT?SyEfN{2F&DpVe#V-mO;*1?zq`Z$jHqQI` zu&z&a2c25Vq4>Tn=Gc$37L{0wV{csxXWh3J{aA~^cU}wk72jG6V=cPnTI{>Sw-&cy zEqdR1Eu5%tErv1Y-AU`;?oey7A8XNz=K-ewcxw^4@vUp|@l~uv_gmNESMI=C^s2R} z_&->SN8WBNfHVL0$D^|Y-`PfI|ET;c|H=IS@}JB?MvIoo4%VPlXRbmk4vA!E822ITl7g(?fsd*oVW+(b1v_As2&h^yF^$|wy^ou^oyv^ zi|tLDZF#R(PedOPHhvM(Fh=xqF8%JaM`f9D`ZIfFMrD~y);lWg#!TzG=F^7q$vtDk|0( z_9m&n_XO4!y1xTknYUcb^(GNT7(NPb_$QJdP%SHe8gtbS_E-5cJQ{M)& zeY*#Ji#qg0(6RPtr730UaGQ+-7q9PCWPDO{`W|9ZA z?KyTIn+~$P7^#rw7IU5MM{j7)o>};09}M9K)KZ)_4xp(Kfd^a%X!|uG_3JcOs$CBG zNj6v0nYFB}j8Hko89~>}@H@mYp1BNkY%3-SA8j2%yw4JzO4^5*IEV>t$Bp7P5SMY< z(T1%1=Y(sB^*XSIzpP7bfa%` z3iT9((EAB`-@E+qB(~Oh*AY;&PE7FS@r(KVSwH+CproGFR$QjRork)}i7?tN% zOK8juN;^quPs_ACq|w;9res;F_lc~ZFJ4Pdj{ZVpKwO`3c>2%Lo(>_#(|!GN~hn)iT_Dr-4M^@pQ2~{5*zvw~O3FyNH?yl7XO>z$|66f_8+xsvEi^fuMeLU>hVaju}ygBwc>G~Y&;?wv| z=ZrngrI+TZA*|iG5Q+p?R|`7l35=bHQJ2TDy`>)_$ZXA$XTV)=Gsj;LG%28{96yWN zyOnKC)rB+Jxa`VGnh)fgl*l>J<(!DK5VRxkopp&Vo+F`aO~0xwXU=$n{$ayX zqU(bB^j|=2{g)FTB)|0+tEq2eI&4nvT%h@Qgyx`y_JSt*57U^wmvHQvPBB(KoRv}9 zyD071PKmF4_n0$goKMl-2 zuZjfW4R9q+I0M{)O&0CHvqwFqm-gIw=$+4Ha7LL!om~QFVE0xkX&-z$lq0XrhXQ|w zsIFlTd<>}IGi{#?;x1It5W}Qu5#Fc^{|9MV8!(>Fe+P{|w7Bf?i^?im+*wxApc~jv zwWdtcc*f*7K{t+IQqE9XLZ%r+OI=pZ7*~ohZVS71n6iB@-zR6rSUK)&lW4DD>x51T z-X(&w;55r3L7mp+?3gF$B^;O^^#qmC?6|g}o<1H|hjVS*XskAdng1V% z*lDR8_{VeJITn|?unMubpqtUh`w#Y2mIY_AH;`=plx@qU30p>-4|&J*FCrfB+HQ{b z_eCqMe{sm(&*}Lj!7cQx^@!m8+L<>kAlWr<%82M!UH8fQB+-F`2Lfg7e+9e=l!V5t z_Zd=e-P$^k-n_|GL2F{R3BF#99lNN`Cu|<*I&n@uZ~Jjc)kKup+K4h&8_C2ta_p_9 zu$@r15Dg;u)y=)^w=1HjjEFZ4INYYIv+%+Buv;ll)<*oH{UPu5A@wTc>&|aTh1!+U zwIOwlunlFsf`24>>Zf(#Pr$ZL_ok@0vxl1^8P*IVvJJSkRDjc z_xb}16KDr>@YsfkhJWgxA2Rv$8l`lSp2O}y>0S--OQGkZyc_FD$_!OB#-TCfAsQfj zKqz-M!){r9^Ea?t9;dNt(oD6#R>=Rb#!p^xji%%6)=A-b*jCr7bSL~uOp!x7d zslB7M5nm>s`sN|D9hY@>q0ar$ylt$@#5{_#&Uaz&n}S^$(GN?rY}?dI@Z2$aXBkp` zll5sw>^j#(^IKfe$~`W`w~Q994Jm!S>;ngSPejw)p~^l3dZ9`!>SsEqDV5Sz=Dds# z=;{}8i9&b+e-8e~*9SGCs}-}g%8Ci<(+icM3g|n6B7!3?90S_FI2KgWq`eN&m7v$G`{t+j4%vQ;+TW`w#eFXDA4(;)|3z+pwXmT;`$P*Y*kO)sAeh`i4fbgCtR7qw z^aIyodY}Y;D=6Oyz!s;pqZ+N-NHBwc!_>}Uf`Q}Zt`4jmqW6f4@Lnh00eGjr`3~&O zn4?yjcZ_SOEl|#LZv+?5y}B>}pBbYx_uyR|<6Frwmgv1h%zdrUofmW8S`*0cbB9U} z8nCGhET_J1MZKd$|Bk|DSjqI`0P2TrY0MohvF9Fkix^|-pN{`Q=--I=!xf-+h&K>} z-x2jquM_9cF5%ot#<{itaBc;+OE`x*$AM#dv>bNL)Hd{0mW^>*s9d(4#N5wNeUDQc zox&HXAADT0HoAgv%{Sq|H|JP6Y`NWt-D5d))mgt%QJ%GBTI_EtXfGqY)@PkM?TT_f z>{?~^$vlw%Xl=P>9C^|-rd=ctrijnkYeZaoj8Iv)U|~Mgs=z4I@ni^x!E6b17K}+-^qA-RF8mXAwE8^jOc46?AnPI>G1DI?`3$O z0}cqjzo=PLN_vS_w`joWkdNBC4ZK~t+Jfz{j&pw+=XJPq7-9MuT|TUtzG1>Azyup^ z)H&u3EtfGLMgarU(Djyv|7bO6C(QxT&UWbi)ne}6_$KJo7|o-gUm?)1B5MC_=r8jr z>VjX;E$SEWNXhuKuEe~>=$&~6^$qsKdGbgP-@JojmT6n$cQzbWdI#keBrgZd_X z-j|Ia%_ZVW0C#(ZKW0~tki(R5su%mwkLn}vNvTcOL`%kMP2XrO@nPy4@Tpa4?~^=N zwH#CSYj(PQz6&3Lu$2dm>dE5WiZNa2;!?k^20bPjpn=w@cMpyEUeBEi@WC5ui!KEZ z4}6}$dweG9Fk4~XqoLgTX(_eM$XBj5QH;C+hwD9&P}?(njR-B;SnkVo!mhSX-uA zkHoVbKZE))j`k#+em;{{-%t^^T>5oq{o%!QbpExlA$pwviOiRFl(wCz@L!?M@0P#c%e5JG+$+owUf$DX>npgYCmi?h@GamYd@g{0 zyCi*c-o4M_-IHmP`CsTO*m??7?gqPE8&@6eUg$OU&AxTJZ=C-l+g+90u0!A8LceEq zs5^82am}UL{SDfkqHnP^R;JwlskHhO=GAUC)IU*J_{Rt|uMWre|~R zdUi@11`pdXsPpe6Jgl~=P3InfGvW&*r#u5%oaVciPe*ZwLb6G$P1+YF^~bhM=sokv zx`83^=#wPp(Et26d>fFgld2my8Pj``alNyRWS|7~_j&kg!#&I>-@gPi_b)TJe`&X} z_b=*v8SPEgvlrjL@cq#A;`^ZsfD!N!oF#zKwt&|hF_MAN;yWVK0psgawDzkaV^eb(a1iug=HaooxwsPYSXt)%^kc z9&Hk1vp+k3<2*Lb`Fs5U?dR1K7tdcl+9r;yXXlBF{MUX$|Z#qE(@N%n$x^ zH=kWb%PHN{X&@G22z;x1&b4v9tt)`%4t#4@O5iUR`VpPP&sw)clo21v{ol&!Q#fq9 z=I|ZQQlFx9irz;HX&?P|Fr!c5%#ZI~YeIP>`;?Ukf8h51s8N4gzz;|3Vf!ZPoFN)J zPG!b?s55d&7{(`}uT0zQtF;u%QMw=W=83ekV>AiXDUwiJ1uwobO^!|(4qcGuHB)?-A= zM)BSjT#d8J?lqzEK1%DaQ_31^1LaMIr8d_Au6g)$D~)CL7TSL)Upvir2l3x+g$?te zwoviai1i1*c-ef~n4^p{Zj!je{5bixSDw1`iMd@nMyL;iW;I7@g)(!QHDA-LFY0t z(4faJaqcGI&0DPNJh`q5oa?%mV^b*w_S%;3)pC6sv_2o0tzHyIGmL#Pv4njlrsTf( z%HR@Hr9Cz=w8YflUubxV>0+CCb?(pO?pM4d+g5lHCyr_8Ybn~BtEQ_L%MXMU z$Pa--V%=DFJAL#_?c9yE({9`4^WI@{{G(RF+ud6tSMJqA-YFl)D^mN{S?ZyhP!)Uv zeeE5V+F>dyA6*;N4!TX1=!t7cR}inz|L}%rX>+ksI9Q`pBAzws!Cgd$zhR-7W5zPC zSSj!6e4*9_#I^8{oP?O}>Jae)&3+{hIt)!(1b+Jy^z6qo{Mm>0^Esg>v`;Cm;ro|{ zg+byYfNK+;ff%0gi}a*tAc1m?8sT(coy_0n~r9+?;NlvW#3 zH1r4eC;gs*$RYjCg*N&T%{bCDtL<`_*`t zeq!)z*xzVuR!TXwlG---u4jM5T_oeWk04&)zUWG-vm`;|+)i^uGL|o5()j6SJ+05r z*z41l$rj_wYkv=)rEN6VemN$n2k^x8SBRFr_LTiy#-j1ky#AN$pFuR7brq@a*H22A zyXn8PmiDOqA;#C}ddPXN-AFQCRXPV>Id-!8+U^{j-PtB>oWU;>PCwA&Z+Nqj{^Qlz zvV^BgVP7Wonx~0w=e$v)ojo0MZ#EO|%{42oj4Fr)3SEG~YMd?3-4?qB zzSkq5`Q9OSL?3n&uYBN<_oE+xO}@Ve?{+L__{pUHJ=0FOJkD#uj`IPzg7 zXS*78_SZ4Zf?Pb0I_&d&tieNKP9BDC+pJi>stxl9;Bs-@@29qIwCN1`KjYqvJAxp1 zJ_|PCI?vY)l<%gTd?l3cW5_qk`53>hp?upfk#9Tlr5GPx>k;QbOpEd$6A~YoCb|D4 z?Qth*46V+LFFuQX$v`iN>aL`^ZvCmZ)+1^hGaf_?#& zgMKac%CHvVn0?@Dh?gmY-Z$-MI(*t8-@nlwjJ)Hu(E`708~0G1S>Lgb%60iercZ>+ z97j~i`!e+2Cjg`HlcEdUe|3Q27Bt9)`w(O%f}3?mrX6De9SmvD>m7FCO!~EDm&9$c z-!H=LB$WmJ91=K0WnX=Q=H+%LZWI6gc}wCp@=x*{@;d0Dyq^Fbv;+8<{FGEXd31D7s?Z~ z^CUzb_zb>EkHA0{j>OE(n>$ z#*eLxA8m{9`Wm)jP-h!+@dM+}^bbCJL+Uqa&zViJo{I_D&nNs?2>-P73*FYO*aIZr z{eHklH1zMJPm8mZj(xg(lISp{-y_a~LGwVz5&wht=I;*SK2NS?0psjn+w0gl7L@)O zzMpWw4BIYeorL3lqKPGx_s6I|r`|tBeUL|vE~XJ5%B?rHzX(V?=Rz}aqx_*P8)(Py$W z$&EEm<$rPUdY?HW*8A)gJ@5j5;fveUhuo%@`T`l4W0X)k%Ln;3B>W!&oUoUZ`f%P3 z-mhML8L+dCngjNTXJE*p`32pDMphTKYN8 za-H*yb%{7ev?gJv2s@oTtVN^=-o=Zvd`VBBj-3V}57r6S}J&_=>F@ z<24;|tn-<7USgiMiFtapC3l@my)-9YzK8Jgej6_*-J3)7|A4^DS9^e$((iRK*4k0D z6Bqrt;XC7oOyLmHa^uNoT;GvcLQgJd2a|haOOhyCC2c_atsS{afZ?i z@CbY9f5eGPZO(bQ@UUHHwYc|1S~KdjeZ5G1Fzg+hNUnn%`z5xgq4A`3`z*oz%xK-f zvot5M2Nx!P%W;I&nX|Cjm;0Dc(A}9)A+zLt)|Oc)?FIHN;}|>QyPkdb#!w1&i8#uc5c2eSF=pu@!b>0Kgj zd{HBxH_kl8dZg;ilen*wv4u1K+-c2ygT8ggsa*f!a$Ov!td9HHk-Mi1x;K9tV@0&~ zS?m)D8Y_$&jn{rTUJv)N{+!VNn-SyHe6b8Vvs<1^JOdmgSyHEd$A*c&BbmZW@}w_O zY-%K1()#p%1Y-wzQjU#Fj!ozi^?sRn<~P$hd?j%O4=9SOg#Paq|L(B(*G}Rbp-=iT zY~_2#na>@BA47F!=j0{)7_L#&Dd^y~>8-aN)I&>&*6TP&z!`$PdoS#+3u@p~)`pbp z62ce!&T+#k@2umPG)TXBSfqa%>5$#(u8dNhmO83%JcuHK=g-92NXKLDd(F7}-kOb+ zrystiVc%Je{cEOS_8Qi4_IC&$=Oq{`${S9&?_Eo4u$^V`HJFF=zoQ;1bB#T2a?h1K z%FKF!*WSm0*R~8x>9x5&1*MH>ev;+KnJc7!ABQEG_lbN=V;ASMOuLOy!XK-I*F1DT^FYKjjbW3$FD2dgK0^O|-vS&cZdh2DfX=qIqj#6a_X+S1X_SZ5 z`X6sFwF!4X{pv3jRroZH=r*qi-Y&6-SGcaG^Io_~=$ z7tl|gx@`S31$O6|%$p8kvr@ntO+^i6Ok7b~?i>FceqUFg%ZkJcf#1-<4z z+(EX>absO)^}?&ReNiRzeLD!(FTmGXiS*mPRO)-%d(KO2+oE3hTj6V~VPQn{>2tY# zI%-((>)z1n8Ay)OShu-XFW^ibI_5-+{1N&NTZL%dK$`w(P7$BL)Q1i55*HBntzt2+ zI1?Z`nzVUEf^9Y4XUtXJKuw1zg5&v z5#3Bu+7_GI}fzm zAlog)-gpTdx!%Fwd8P!86!gHomKck!ILdmZ!g_Dj^cMb`PG(68b; zpO7!T8)AZY`UdM#(43L1bQ1m;aApkN06J&H z6T~c%xoAyTBg7+&ZXGyDzlrG9fsqFn&g~NCTj{WaSMUj5A^k0}2YHIH2Td?i@Hp{zcJ-@fzAViha&x-U8o} zjeMS${_Mqj9?LFQbb;@2-y5Mk!NeNN=ASAB|CHV#_^$LP!9&6Sqtv5hzH88ZZySC4 z$RL$Fw7A?y1>Xg{N#C5?HqjI-LgTxK#@eE>Y=Qj?!3+5mV?9h`Jw)R?LgS0Ou;|8t zF&gK!a-6Tbm?ulWEw>FyTQBZ?6fg0v&$4Z#q_@Lv%SYq&Ddxj!Gh_9r9IGoXQP+xI zflFn%w4TNhzDZd>Pty0IFvs0u+aw+*oK+#MTG(#8=$p&d?SOv>e3Nm0RQapf@!{$3 z4*K6t|98>~>4)B|X#Zdf3G#9dBpJ0(oEkMIg_PIqzu8 z_vv2f zm)X9t=G+^7BrkN#<>70`N zn5bi$!TAZ8G=L{nW2yQ1&aM z|97c=T^{D&zVye#{Ah6Q515NA%$d3P$3GJ0BbS5Op~Lu6i_7fK>Xg3H8`oax&($f# znn~xZnVHO*u|l(p*G!DoO!wv14Eh&$Zz&P$=9OC=>*lR}cBsGo=4E_#TnfI)EPSV} z{~z$x+GGEF!1w9Pz?Z8NIoavncVnwVC$bYdk^4i?iEMM~M6%xFensd+>YvZ*MACDo z(1|Rybs|ZYEsxz|X7mVc+Am|Ql|ru%-|;MUB1@*|JprA_Z$>h*lrulRcdbz_qZ9et zk7jiuMV-)z9HKIV1q6e`&y}-IeCIgB^iKWViT(~#+DJiw^$`hC^=|E%k1$X{#K9ecxA&xi>%c<9h4^se7Rl09&qo z*TS!|rP}&2#G{@)?&2?iG4 zKpJ$`ytt!l3u;nl2Im)^ZfXAw*t>;Js3Fgyew1Uw5bny_5}fNb_I0)kTLO~HQf<5I zgD&a6^C9Nl^;e>l{;{x*^Nwkj_lJmghfTe-(OW|6FfXZFzALZ$Wc`$GdE03I_S~hE zg(5VsW1*#?)4}&aH*;To5a$D%BaEY|4~RNb@4@dRY*K{IQh|%=8KwFXR9EAEW!a&- zlzgshG@ypg24PQIB5ZOkMV?nnc_y`*?@bi_b~_Fy+lJKOE+w@N?QkqGHMIg`VbxgP zi5lWr)l`jyr3$|@Trbl-4`8;_Wm(p{MIUI*&GylMqgacu1@N{>TUwfXp zzE0^!hQ_`EalR97=o;}|mmMS04IBS4X*coE)s{9v&+q|&=Mk4u34P@*_9qcq0UIxl zIlWq`q;+#1ZBRK)jKj+*z$@)FmG5srygtQ$)UcGW2YRa({1fVsBVc#c=?>BQvowQf z5AsU*iy9TAWeAtS(SrtRothcG-42a}#lEEx*g7$QhQGB$w`@)*JWeR7fBDT*3l-o~pT)9c9 zXsrpYXmsspdvtve@gXbr8Ug>mt+U{hrMF4OmADS~?w(`2)MnV(?F;HO{;wU?EQNS**x`hrTlY1ZBPkn%5-vq8 zYgmZJ3Bz|)gz`e)2ozMqN0VmyzqTppuT+$V7T28$rTb*Mm(snoPo(6#PVYLs+ut>M z*XSMRwi^6k+Va+LzPagWesI&jZVq}L+7$GJ^CN0=fe9a(1#AyTV{6MckXsM~F^oGc zS)Tf74r^x3pcXU<*1{nzSQCmUYE!UbAzTsl(X)3CJ=0he%KGwuM}0M1M=SfU$j4dp zQEDR;k#u#RDg1No%gS*XzLQ{}@fG=6*)Nu!mCZyOXm^>l?;m$R)e{Yrla8C~-S7Z!@xCY{!9Bgu^P zz6A6R`g2~6Ymz<7L>lobS`I&QKWJo^XW*oyk!Pu`nm*%n%BGWP&%IA4jnMLg`-6Jv zz`~o!HPPi0&=Zg`o7?Dl9Qp)^Mf3Ec_=0($<+d$4;#WCiv4yibw$jHQ+pAV#e_=l} z;y$aI;9G(CFBrdF7(c=p*o$J{inGs95d#D736JnE0pHMwd5tvu+Vv3(zeQcFkF=lT z_uBUAUfRo6AV2hOQAWnPd_&mtFkj_}IgPWYslP@1i5_vrswXqH-wg}mK6z>>?Jqv5 z^I^nlamGC5&*~A=oCv$!I+-7Li+*`;;kEbIYa^g<;LxlGl@do~}HAKH@ z?{0U)zp05h=RRrM>l?n-QfP1X&w9kZjCjnc8cQ3cJ#=&n$5Zx?c!bYsjL(?xfBkm& z8j^Ezt$^?R^8}ySE#aGB+wJow1$^g+7r`fRqYnD#M`=&$((hcLc{Snd0y=^=&5OBZ z40Fk|$KB%0lIE`j@y%0fg5D&-L;u{Tx$8{Wb}RUX_%$Q7rgvC3_2F96H>8{1p<2^F zsGGjQTC)V_u!-wTjrK=#!XsjgQ~yo@o@s}VKJc#Xl6PGP{C5Xa9d14|E2e&3z#RXi zKH|q&{m-to{Fv*(OuTjM4T8t+f^C3i**+%R&ATj)2SjbobGo?igl)Gv%sPodJ4U@a z;u7PJa(lie@D}Be9{E(Xl>Gy%=f6zj@3noZTYO%7{(-Cx1je2HQok=<7ep*QjvXHH zXYN{Ez+<9CI_0^Rc}i!D6?Litx~e#z_p=OubL^?*-~sWBbohm{W3jVch&ojWUlfp& zV0Sgj_rIH;A-Ik=F^@F`-zO>g-GlE!$M*aJ;!5#*ZN&B!mv6`ACBDxqV>_1;|2PCV z*>Bx`?sEgjaZ=B}b8+8AA7KN)F~au;%Bbv7^nY&gd`I9rk=734%xkGyi~UT~JK+)d z_Vb?tF2lzFzPEam{4PD{YAsxt$66h&CAk9pr$<@Yk>4|7idh*f4tEzbSY>auEV_$?z=nIn0luHU3TVef&Z{?M7%Tf^=9~? zo~U747n0qS<1zw6qbvHd+G( zfT_c8?;#nOt`RUX{y@G^W(lUYnux#0V|t+v2^|ZZkq~Y4HS)dS`85Pn$yf#^9`6~H z0X#HLx^v9iJ*JCbn;)a}CulwW=(>o1g2tZYnU#=bM@e>wP(2pg93-LFRL*`LboO}z zI}P3T0|>aOeK+jarg+YhDSOWLx}(H*W%8G0^CzK4w!#V1B=zHvVY%9uJ~-b<^b>a1wkGeU$fYvDec+S(V)rlD~#-c#AH4RCLz`2o|Lr zzUJZU(E-a~m~HP&#=8`)t&!S@cepmE!n?2b~&^!?$Uj6HZ4<_s|$0#JsFgmJ`plRL)C@ zJr*3hj=oWu-Goo2gcBU+E{<4qR1a)+v0le;p3%nRas_0_X{<3pi&*Dd(3RvZ@D(HV z2ucK9OMVux95Tch_19sH0C~fAz z2gTg?J_}z4^c$o8t;D$k{NovX_ob8y88dks%c89fuyynD9lDxSSSIE>OiR~jZ3{ji zso4JUvi=p=CO8bAZEshU65v{t{o<|m&PboLv|htav=?M~z9XTp zfid{0gMA=;NlqZ{ihBOf9556MoO|h~_?5bEr8IWW0p_@V?-2VdP?OJwS&!_cZ_D*Vd*DOZ}uE%!I)1O*n@%!y*E9%!E%9*#u-MZ5iO%} z*BXhZqAt9z$uHur!#148^h<(IIG-2Jo`rbgR0s9JB6xQJe)d0IYpT2QNfr$AnqNg_ z|3Q>Z&N<7*2sSD^M(Ov;vSlbsyu~7T*{7$3_s8oj7j)(J5R4D43u=v8$VaeNG(oPE zaeq+<`qxQ39e91bx9N}GkFhHmSm?(%(Kwf9X`8Zw;7G`MxJ}GM@{8?6bDTQ&4_|Hi zo5D&yc&djt2mK_!;Cz00tcZD@S}Df@cHi(dK?P?oN2`N6@s#>dbEC5pf90W zzC?A?&IupY+FW{ zHX^=WTH8cx=ArAHG)#NH+}I)gIDzj?l|+|^+SwMNMz&c7z9y_k5eJ}Rmu8mqX{J8t z4XhkmO7i=X=*q?drJ$)GP(XZAzOe5xRq#9{JNmC4Sa=nA@thx0;18?D-v7F(PV7&k zhFLO2?eF!4mPHDq%VfXY&b)ZG?*yjp%%weTGFVenxP|iUNqG0{p)+=6)qf{}Y6_4RPXYC0){C zi*Ao?qwp%Q%qqH}WjOvFS z)KJ~P&`NzM3!2_K@N_4Ahu%$!+Uqlvswv`?ld@jK zy+@smth@ixn8Qxl>)>@iA;*sO?J-uw`(b>pezZQwGPs{rLL+lafIvnR@G;Ze-yGh2BXKFs^Kv9`lS>})|^MAw|KlhNc zY?|u7YLiyMeqr6K?l@2%aTA`VXV_-_+%X57OWFy4sNQ*5Z=0<5E?MuVIX19*?yJuF z4|)cMuG-{fAD-;Lk=ps$4Z$lTOU*0y>H+`H-eI|+8%T5Z4-vocL%PdvR?X?OUql2y zF}Eh55^RWjSxohJ*)Z{5{&DDU^a7rc+{^!}zmD+jn`}#Q7oOuK#PYQ={rF2t$GQ32 zsJ=2;-yTPOm2;kfi6PxA8Co5=i{|@E!n3=Yp})5}5+I!T8~6z%G|>~3mRKDLHX$Z0 z^_ytvryC`YLG$*0v^xwRoJK?)p}Zrj1Ir)-!;Tl-SBtMy$YvP6e1#>L@gd6tRDf=uO zSh!!{*Tk;{UQL{57{q<6JcpXRO89Yf`sJHA3V7^yhtIth;=e)_RQ9TdsItG_EN`z5 zl(d$Fpi{gYzT4L+u=!FDo657HVIlg{deh%iA1G}tWj`sP)AJjZ0MSDQv9XLN>P_#V zCBcQ((h&QH!FS}vZ9)h^vTSa43IHmXc4tWM1A%5LIt@q;I6>D*2Bh#vhQw}~F zXUb)btRH=DwSA|kF->Iu6-Y-MTM?6TU;$?(=$i|70o`J~e+DwlVwp~yk%;*Tx-xo` zB9?n)w~RLfI|msD0{)dee2&-7K9&mNv`@h|3evNFXY~7}J^?+uKPL1ETz4ke{{P&; zSgqxC>TEjoljOdCt=!8tJ9H>cjg#EdXPn;FChsleSYCY)zSs=-5uA8G(UK~8Hjs}! zhWL4J(rxL}%PlR*d(R|%9544vz9mK9asI$I$A;;hF2%ll?kw#;*DbbHIQIbTNamdW z0o92Q!lv_IH`Hzvxq+ zF?v&1=01C3N!*>Tk#Hf#Jnp^oq`t;Sgl_D)kL1FMm^U^aZ>D;Cj2)?dgU>3kKCgB7 z%j7+l>UcNRv4A=j`_4Rj4EGm@+g;go!TC!Z+JdnwLGor&f^Q*~a+T$~M;dv%DV99+qvezt~29!@R>5xFSXMJhss+ zhaCy+x9OkI`iK6~k2VCo?e0)ns~#q4mSN&$l(B6;vT;UC6KDH? zhw>hh{k_%;oMjudvk%JhFWPa*7yGwAJC1WvnfGC8zrIcK;*hI^ubZ>4hxLdG`$Cy- zwnA;=JfdoEK4F`)i{Ghc}YkP#56yq90$4^P;m~z`AYA#J%CO`XZ|L zLya%zh=S3CJiyY(gBHsIK7~~n{*)?pF$o#A&&Wqs3Up6wJ^v=FV#^{~u`OB%Ah%)I|%doLnweI`=CVkbXEXtG8g`c?4pDFnd!CCS3=9P__ z;(OwHq1V_`8&U^JW+7RifOxcuAJ>ySrf2TWJ>pFD?3Ug2K|NN(_wB|Ur%e=pU#8(* z+MMT2*IdBJG z+O3z`N~)Vqv8MQRQFa!mX^$H*jHs|_hD z`#r1fAEZ19kGZxn-%>-3d}dTi_58!QtOx!4;d)Dlf5F6R(>u7D_lUo8)Kh?ZaP~V% z|7i0k)aN9X>u?9vi5lEbhRTp9bU;~2GS73#GIK5U|KHI6?47{b3-HC2L)%*%K5#AK z9Uid#mL`q#da9!_>}LA;Ztxs)?#NBk^qX==l&;#q%FzC3Iq__Tz!~Dv*xqWf9pCsr zqI`BQI=hkHZ=&=E9qD{dLlI_{EeRUWY4hT?4O_b#xdHxSrriVcKi**J zZAM@@t>+>d-;YDyBH11`lqO_moLOw#rm#K=&dS!&Y%Mbt#kC2(`GdY*pHk9S5M3T> zW<8hpw(~t;P{DmQVrfb{FZdX&3VoM#myDlYC*o$|4uxQ!M|y8TpbY0Pzz5pTguVsQ zh`xdVbh5oN-On_X()o`1TLHd@rRQ>~`$2RentxqL_}<>TG?3T5G*B4Y$1%eEG-t(! zH}YLC^oD(u&(ASO+M@m~)E+7sev6FXyJVzFdd#Fvpco*$qzwM@XGmUEt>|1ry*IuX;?#++-Lf?-T zv!AGZ%OCnz(H6nrC%MUw@>KT)l$Ab8`CKj~eVYp$IFhqgBRAPN5c6ya1k^L_IIHLp z^1LVPIWkN9)s2LUKh2&~u+Dh-#!VXWOJ|;F@~=|B%QaD6#9D83p9)j@uULmj)Wd6> z>H+Qep*Ryb6AC--QRy8z2rIy6IqF6 z$P_r|AilswKcL!Lh*_(i$ z35MIKjt0RyoiRlnV{bU?0M1SumUmLfTzQk!_B3oQ4a=7zetOEV{8Pk}Ck?A4$@=sR z1L}FnQ4j42N7f?tj}}t%g#4j;9OtYfkVR_s_?|}pDiyLx zKcD%Hor~+~+vOdK2LAy>Loh}=1x-Jr#q{(Yl;;yoeBO8FUK{shjJ$eEyU!7a%q#ux zDnhP3^Eq258|$gtFme6|dZZfz3$L*rw9qN}Kxeh7Mz6-*`}i%WBUVQ^zX3e%nVkfC zdQwks8P(J4;q!cq-Yw#@_SS?-aE71V>)tH7{9ZTKN`2XsqO~OG{F~ngo#&We>e!?B zChsw%&x12Bi#rsjUnX8p=cek8q+sJ7mOj=9=1&s@g7+?(m!O=NLdU%L zXuM*S=lhgrXZ+THm-j8$MsoTYuXDZ#&gEF^^sSqoiyFn+1RPJXuAq4S0^|=lkE{n2 zy;}62zJ1RA2AYU;sWavk>*dT3q@Msa;phX=v?2QTTsRv$-8(AMb_=^|+-YU=Tb?7Z zZLJvb9I;00jzoq%N5-tWBW)vfM>>Y>Bh*fq(w}aWe52qY zj%4CyPk4?rjeCx?Ox7LgC%k%OqVC93<8?=(V|7QK#{SpnIns}@X%u668)z5On#6pP zTz}@jn`!Rt^9DJ`L7b;07tfjL7(@1XnYy`Qp{p9PQY@AIBo8dSnYzVNdfc#a8C%Ub zqwyH;6nX$>ZqE8w7;Dbb1;&B*a!ky{xcV;J=Sh~gJz_cN#S26$BCT1ve@z$5F=Iz? zzGugr6?k}hjBvYf+F^e$VOSyOuUMSpjC}|;#bX-#_0~nKkOj(nIzjtD9`080PWk_D zH`~si{x#8ye@rc^_w+B~`h9oHF)hU2PxH2Nj^tM8tBEyt=7A;=Q%IZGI*>X<={Qp) zezI4+((f3m8@Pwy`*WL~5N&-gaC+1;a2xSG@TG!% zu41f=|@I_bZ7XzTXmi0qXx@&i68+17A*Zzl5(Y zTVB9E4Hr?usEuB~)gP!l$iZLIg6D{r7Y_Ux3wzUi?(^r>4Ne45zH^z3~Q z`{|$Zwv^pw%(X#Jx4e@Rx7oF|yfv-5fk~esBMjzV;n~R|j;yvoKX~f{o5w%H+ zsK`UI#_RZoe0;Xm%045#F)DNPgAXo*BEdUY|B2r1yKUS}%J@&?Xm5`{d+%-kN*g`M zqFdzo>opNxZ=*QZsAv;$)R(Yqb!$Z0)11D^#trD8f)7C~0TG`dP*gjxFdM%WG7`>3 zMy)W(EYdFw>pIxuS3@#ov|cGbDC?%Vy#w~BRR1PN{m_M0lN(HF;}|HKx|MCE)G3)p z?WIv3b!F}M7SFHjW4-L-25}ECx|jRNd;Vx2cqtoBXAAxz=j+@X2DdxNGcGi*28>%DOVmqJL-NCWsYKT_Xa$iVRj204&&Y!Ih zRrVSozAH)9M{J*-l@s+GQ&E+%?hyC7u!Z`KI;r_lv_Hx12J z=h(2fkQ`h^^bfS(j)?*Pz8SmhjZ{yU`&6fGCk_}6`fXkoxO|HJwx({4t{}RCadlze zoUD%`Zkj&p-qMt@xnQ=w1*dCWX9|{EktKrl~e-B>`!;9m8r6Yvr zZGQxw4|lmopFWtybGHM>ufG(IM>9BnU&m!|yz&w_UJ4zS92{RJ)0{Z&lW9&I_sF!& z`DL@vFSGG^nDDot#Z|2|iSZ~H)_OZ*T5n5ybx?_GkL^roy^j#x{Flqb+!`kSKAMfW zmF|og=@!E4og(Je=vNX(`VqqQ7CgTNUJnbr-f{oMczyScgx4*X!0Vla*N+Ii9{t=O zj@Q;Re;i(0LyPgc^G3q!&fkI8Eri!Q1zwNd`G@1R^@HCJugxtEync%CI_kh{J+7H0 z&iuQIf;f99K@3Q{+>n;;rm{~bT&7}|Wn1UPWlv@&G#f6w)Ff@sElm)|$6 z&-{*kvJ`?|gMXx;VFn(L=E*H1L0)4As4dOOkYslLr#Z?x8WX{{k|8?Cc`T4%j@ev5T> zLaeh-`!BJ7l+!xvy~H}}r*+mZ*4e4>AHL3BoVxTn>$`u<6S)I=Da7M0rFNfz%n^~W zt|M4!O+5>{x`XZ=ca5>{pA5Vuqx$*sQG(SXSm}QPKKSWBDexkQ^B{%f&Q82H!}kSj zMo2!EGP*15Ioydmk+_~tkX%aR_TsOa{58s$p1iSzzD?+9i)7V)$Ud~*pQ3i7nuz!E zbmp$0o$s#=#9P|q8R)cqXX87i;~dtFbevn!J3ogGurI+p=!L?6tH%ESg3xCujOl5_ zhW`x7Rw_OBVyxpj&+o@*oK|*;d*@Hd??aT{*yuUjA$@BYnCGO&^huv{A4R@VJ$*9b zIedpzcle$j&y#oTr9MvA9lmd*?(qH5y2B5Q)g2DeZ-oBC^xsDRO{u!WU;lYkQ2C## zp!d0|p#MZwu>9u@Pj364h9?8hH9UFKiH0X{qw)G6!C;?-ZI%AD*|x{e_D<<;#G&Ee z>Yx(#Jh`pebNC+W&)o!fHE5u;ja^RP$_Mo{d^J7w^9oD(WrgMa&kD=`s|u?eV?b?} z|FYpp^FJG&T>GnrCpS^~B8*3Z%E?&Cx;SS&_2C$$4N+Ut4pYk9r#?vO+X&_whIzlV zHBGbY^;9=~e_7NQtCjG;L5Jlsj;uciJ>WX|F!joz^?t^@86Uw$8OXT%c; zPSF~ff*%X^lggRO8eY9wkA>ndoait z^jt2_H0zNEN>qz6JWyQ@>R(zX7 z4{4~+I2E;R#p9m)QUP@&Y0G@@kx6Ou^q;2maobJ2}r+&61KQ@)dq@`!IL z&pxcv1lPv!CCX3V%;(%!bGnv^oj~w>iRS*rYTzk3q-%rtH=X_`;oCe)X;kk&^BJ+@ zyMr${PW(W3mIt}ui)$DBN3{zj;0M5ifG0Tm`|||Hi6;nNn#Ug5@zy-{m&z~A4_NQH zm>;m-c`=V|ZM&Gqwl-hPV_WsVgU3ED_xVS%JoXb+G3^Om^4QxG+7mRdFLqys$39Mb z{vBB!`$ARBxS-R%zg_UyFYZqm7rZG-!}DA0{m13rUvi1P|CyNkOZp}D{_P3(m%L){ ze{uI8zW2ZI^5uAJX`8})whbS6Y`{x$zreVSYSvF(E2fAO#WaDM-VM}H4~pVpdrqhqbDrM0%6 z*4m~&a;**0T1#Jgt-bJ1SZlLbYX>e~YjO9Nwm9#ysn4H9S)@ySPT=WXSSOA&;Ok%7 zYwR*>XHcx2)j`MF*+y%}6l~7Bk*+O=YPcdx$<)B2YWHj9pU?CxGsA( zYvVG<(UbF<#pTf|CoWIwkNF6fw@pf1rvHhk#O0{OW#BO3vl-Vrw~ey?;>hDRJ`*0N zES!Vp_+OnxKMpwkubwL)~a;xaSNjtT@MPGH(lt=N+c$9o9%Xf3IW1H53w!f1ra6c;S zmQH@4QTk4R>=kMsu+!ho_j7ifympiwSP*y0@O6G2?iyG2`i0(@jo;8G+UpAHBem3? zE69EbNM1M_Gcs-G30qcEZ`C6@jnn%_DR0za_e*K-CO*`dU7U7<)Ctj!@|Zr4v*8ua zc%+w@>*vH=x8C5K>$%KaKYxnx*fH0(tu2+m1;51-k9TQ1w$XU1!e0^WF`gfC>OIjr z&fr&8D!7Z-v2BpXKdo5`$8HdE*xO{R4dk6{lr|^!cu+naKK(d`$H2lY@{z1kBWx`q zcAT{%IoI}X_$XAL ze}dxzNZX}Y-QjuYHQBU^%6!~e<|>8bhAHjtRX9s4AM+^1qcxZd_%h7c1n1j6BKh8f z&<{FtET7h~{_E?9*uT#U0eq+S{N(E;>~&*clYR`cKG`gwGoiGm)Fa@-0;h?%qqzLsl~8W&Vg4` zv@Zhxq&>(x8$AsX>Mv}TiexO)Yr(&6h~1UqDWc+n5n--;OWZwx}$ds^s^5Z({(6*dmTkBGRE!+UJM4+0OL zjC2b;G$f4x9&VyF*|HA2hM*DUQ^Z?zxOWhZ9=;!VF=|9h#`T~gc|xDmIUHN;cNY8B zF#LIxEw;ZJ{u>boW%!w}^b-bLY-e12qutisa+bk;5{v$@~GCKfjZ8_JY@IzoQJ(0vfNWjqDRn#dCt=?M9&YJ;G&qFB(RC z!&2uS0pC7EA7_vs@ou1Z5a(E@!-yxgLae#rR@iP*zGu-dj0f5{>EnO zGyI~kKe~a1NghLvpL}8_EOi|1F@&E)j3M&R;9t^pN_zn?O(A{^bdWRtu-S$#mw!1X z_?Jf?xHPYN;-{D3Reh3I$QQioi7v4YPxOnkvJ-ua`PBLGET4K}-|yg4j|o0ClDssZ zdg42|d@A(Jz@Jh(&o1WQPJAPme{=A#_YeAI{}r?O*$xqF7PmjoO`$Kqn`DGwdCq-^=wcf!-I<64x$m_4*+#sy4Yy zHI^U9mv-+4^tIxw1IDnu&fg-^ziqH#A*YRP|F7EEQxRNE?G)PW$TL&hC+U(-_74$M z4l<26vB|;bdJejSh@q|szoC}kbLstw4G~ul?9~jXO~*i_hsxS^9dDz4jNKX}+Ejf{ zzaebNr9I)5*mtl#XiaQMdk|Zacwp&|O_R1K;EP*`R*Y<)_oIx zSm*E^I*{NIf4nZ}ns5h}b(bn7ct`te>p8IS66$usN-*LswOsBkx)ZN^j0n-M6Ibo7 z4{FjEmAga4brtP1-sFUM*1=n+&<^4hEk%5M)Q@5Htj-XR` zCm0^%vqO5e%M+}xpscKm?|dfeO@;HTC&1U1GT%_c{!VquZvhU*b?I}G?WNVB4$y58 zvz_$>=LLNkYRz586E)UFGTCOycM=VW6AihKXh?@mKS&0ky?JQA?Qk zlF)b9ZWZy^04K*`rG8x{?QNE!4N3#<6!x-CBKz)z9$+5pM;3;t4)*uy#yjK^l*O|w z%QTSN60k8Z4}NEtw(9;_Pe7gF_@qO>;n-O95v7sJVyv2JtP-9;LA)CL#?XH_{U{9I zoY|j+9DK8>CSc#7nJVa&q&@RUcf^uPDvDZ8|2NYAJ@o$w{Uah;iBl(lc+3CkF+P1m zBy(PN;$yar3h3Kb$o9sm2U0rU9rM1qoYGu0zKzxjNmW{SPj@UO1~OrSPRYq=_@rs~Q#%bIRy& zuMX^SGd(LV4=I0kn0TBS!i%r|d$cffjz)Oc>^k)gs{dWo4q}LSglX>^(uxmT9mhu)l^8TkYFY5^J31s zj7M*H2cI48XrVlQDg%8=>^JVDu9Wp_t5}Ae)|ILux9~R|P>=tt(NR~igmIU);}OD} z1*!w~XtLeoUCz8^GB5EC5z3pUy!np2`}=U|!q&4VIp0Nf?1ntq?yfE&n&2Mu1d1d2jt=L;E`o;z{x3z-=AzPs4}>hTZkUMu!toS{O_jT;%e+I@Px7ido-+=}_t?guHdPxaou;~` zp;Kj;-pSgC7e3LP@&(oLl04T^ajr#m{{z!_M}1QM*M&~_;E!>x=k)pSuwRN1{8m@S zerf1<*f8&r`s`ncxi8#6V}3hg1hUU|zMnr{CuM-5qYiru_TjB)?TuM~RC#mkCu6W( z;PGJF4AIRQM;VOoEXh!ayH3B}!8(qc>!)Xbye{aA8^ZrR_@@>R$J1royMUs?-n7K_ zqcy}a+K;QPG$x~t`iE&fHMx{R=?~M7e=a9{k^8AmKiV7Q*p_O->1T5s>qi|-l1!?N zIqIafWS`reR}4&$nQ0IqhHgUQ^M& z*pw~r6=yqx?~&yLm=D<1*mHt)9Cu#`P`iIla9u-k?k>zf;mkL1ZwB3*q=)cfe+2m8 zNqC^oJ-ClxD015QVBOWw_c7MD8GM*{j6CPOOTT$Z#FPpsp3ZO<#=Lfqc@LG5`Y3~C zI2U!stbK6dVbJmFZ_E~NI!OEvaGa29W*AW4(W@kAnQY7@JmGdfE(^4 z%d&%Cux*H_jsF(%_H(bwxR`AdA{~16#Z#UE;zJh}#624P@a!TzgGBuQ>fj7t)VBOv!8Fa z#rMJ&8>J&n&RzZ_Vso+l5Gp1dHt*Nn<9r*&4I&;?CK{YPmGrtrNrREGMGiZSsY67}CSC&s|vs01)R@Q+rKqVlLG zRSSOwd=AC*f#6>T-$V(_OKT_(xJUU3H=moAwy>ykGwfk8hLqlgyhHSlaznMjs^QvT z%?Rr$2%QQ`=} z`H#1WazW4)qFFxn)5bXXTnsjz@Z&Hp-k&`v^8P9O;E=refeDfRVbnE4@JnBIw_SgNMYRkSGrtyE!=B*(^#Ec6!&KXm-Kg5*@sg#jSITo* zue{gs5Fb`TdCq11&nPRAHmhHI6Q!R_tLKWrHnwXv)XFKx_yWah%H*r44-yP~@zudImm-H}Slo*rq z|8c}k?!p~8)8oVlY=x7K@qru;`WDwWv|(R^Ukd79JNjqa%yTSc#ns!Ky<;gA^(X#| z=UfB5+QaAgptr)e#UT9t+qA$3`WwTFu7{quq+G)>SSYQI$4la+)Hm_7sN zimi}eEZAojay)x_9|G^Q&va4!|BLFso%&ERj5FGO!7|u?qP~FQ{wK&Bj=JC7N_?!v z_Z))1M~tMsB;&&$iUogCLJofeX+*D3;XBaD zL$tD9aN=vYpE+dvP^|$!l(>ogNozc>R|{W_iT84vbFXd}<00-*6Y&34EY6aGhy}BB zPUpI=wQ-7`%VHvJxvaB3m&Tw>_Kr94QRYEJJBVqqg31#gleh&qoURG_W@~~vVrtCN z81{Kgb*9$L=qlND#`Py|qdC8paPLLpOa2*iO=+K?v`v(DfztM1ekd(SY3rK&tMV!B zF^nnn!yG!jzv?qiB|9^I1qUm_M$pEiRWbJycah9r0v)bK_i0+UgX~)=EO{{G6MOry zl$?`0#TXw;rgC_&5-Im~hjTmPV~_O+pE(1`qqO(TXqlKs`qA3p7W)1@;Unr;2k%i%eqZow#M^?7 z96JU&()CUA>q56*@ir9>d|Alv$DYM~8~eOqA2teXbCx&rd_DK1V?Ja&f@9widKrAK z3Hp0M#Eum)hh!{88mD7@O-wtE%}BlgXGXgRrLP8^&t@+w^CMa2oRqsT_g}z%M!cJw z%6}ES+X#3M+Ed_b_!4!r$U26^-hXU|-21^Zd;xoZPJYA%DFqKQ&h)}67I90hBHSm> zdDz$Xr}!M0c~KKK`y3|(zT8OesId2gDeyG=GkT)L(;Tad2|iL!(;O2owFSSxPvn_p zeYRs)#H1b@@N~8|=-_*f9q1H&*n~Z+PxK*xd4}(Jf@355;07EKhGQMe-|)lNY8g1! zTtPV9=vu83jt$X#zTYvQ9?S#P{at&ksqU*V)_TT|#<72vdI#W>Sbvn#c147p$`wLy zs6JpE}H;vXr9Qp#KDIRB`H<;#ejz5iYhVKWdmrlG}d^mUA#Ptg# z6D4MdCVY-)LIKt`c&(YbffW2q{(pphdwf*Yx%OQ4%p@eh5CQ}Ux+Nh)RlF4eEtP3Y zD^;|%rPa2yXIp6xUyoYbDx#u{7OS#04oFpx0 zNJrEw+=cIXl4gw^QERYxRN$`IA+DPp4{5X$*(v6HQR!61c75|x_H|@_1sQ)NR{7Ej zBc*JrZp-^1Y$!y2KEUTlPhf(cCg@$e%%Doj!B${Q znIqnCmWX+|Q_yiP;9SPhW{lSCU0Nuk+!IVG^XMzlj?lTP`*)h^Z@qQ@s<|k>Gj^@& z`->9S#lDw(C!_3X>mJ5BPw&q&7NTs8bq6Q4_i5GM<*L0)|tEjRH2C@{BBe#%=qRJk* zqqkq7=i+-IJ{RLd+wH~pEW>9xK0$m|;{T{>)K_<0qn}@r9$wMrTap|0I;K5$vA$wk zo@457FEU)CuBLRQ|GcEqC1P@%C++MR53h-`))d@P^G1E+xfcJ?EpsgjKbEM^xLC<^ zl~2|ie^B4A;@RS$!*x>HC5;`B_KJ~7b2OoDzR$R;K*`_+0!9jW$!7;KCg7>Z@gH=^ zoA26beS3Q`-<4e7HwyjpTY-~Gx$YD9D!e7WS8q1i_Ubb1)h4x97s|bgy=L311utT+ z$|mb8I2WTgoV`5B8+ZMY_90Se0O;rGs_nlE6Va5ncFWmT|-(hL+K|MFqZS6 zH_Vu}S*~&VGA#6$gh@X0s~qX0-mo^pXL7CFBe`;~iO;BC9Su+y98QMY^VRn}JR{uB zmi}pP{vh8Q#y#}Lta$u0+a2Y*@^QQanm*^tSd&*cKZnD8yTjpGD?jc{w%={|oKnAW zD`=PD6D0iD_`O#uJ)J9ejq`hNUKaJ-q1Mp3I_kM+E9kHD+5(Ls&~fe=4#$kvK;ss` zQmDukE-LmlZc_G@O8~>mlw5ae7s@dQr<`MSY*5Kgh=0-U;%X_caJJ`}3A+7IX?Pi9 zz5|Z7p#Bdf4-h>wAZ7U;;@O1vpBC{$8Q;($b0od-EqV7wJ1u#UEiN|w4g>Xo(N27D zzcQCW8vmo-^^)d@wvgrkuYGNIQeU9OpQX$qmS;FXlZQcvYs0?At-$jsI1Bl>Khi;$ z6oMA5b|sB#^H|Y+yek!5i~s+k?$3%RIjvNzOZ2(8ykhK9d566*#foQz zHtvvd;-ZDsiL!~=U3rEsY;~6yx%j;dpXH##ODV(44LRuZRoIRHxa)#g*R7$_&Hu^^ zIZmSdS**iWtiwvILw;z-3YMQhd8t~jRa`I1^HF{ref{P+rrD z|E+n(O<1?`mONt(_M!^=a0_VkEup7HeBIQ}nMQ8=Od(&a>BuvT;^~IohB5nP49<#A zf!-+d?bLy^j{mj#~V;Dur8nA09U(IosCm`}MEYk)St z1ir$uJq|OzXugE~6`1cbtmEe`x&-_2raU7>nQDzcW6>h^eFVKvI+kr;%C;+U-umVL zi)?*8ioQImuUyra&=n2Kz9O=(-~3(mrL&J=+kT3eZL-}NwssjK)u-B>qS_TS)~IZ^ zM78^lYIhRb9ksQ~wk~jpd>J9)2jYezO)r%7{&@-geH4C})+6x4>wmZ6tfBoUBuqyC zUmPZXb4vF0`Wg0R&vyo1Z1GHyN0#1<}q%)y~avJ;QHmRXcxSJH57cC|m6c zG**C5r~qHE7VqxnyVi5G^FZeRQ|-CD)2+pKM#OkArFIR1K?k#l9%Zd{L34S z;9t5FZA8;amuKWH;%`7ng@R6D%^7}p?BM9c;-_UPrt35h7Z5zw~X_%^s7gC ziHNP3BIJDF+gjZsp7Ip(*VN&#JVV)=whP`~(1yCAt2|a)>OuTqZy_oNwCe-~d_OB27_Yvz%?5DHF*3assevY9I_>|X;f78z? z)cpeb8B_f%Oro7mG5&Y;IPLVt6;?l7yNK`!e`8V9YtaIZ3!>h8PP3f;;EI;<$ou`Z zKH=LHp#S)5@6(@s)JNJ^Pf@hKAHPYv`x9xP*E-bqTg;~}`Kj0bWTOv1imI6DVou(B zqP(*T{R?JOX2-EubE1v&0LQH6M!KlR`@&roZHV#D>-QNt?JBG>RMUpT`Pv~hhJ)0v z(Uy;T1LkG~K1l(tPw8>#8ue|!Q-0iW{w^2S=C!@J2h%&zW;oXnHfWSXngN5kAW{Z= zSGF+b1MLq%hrR_qVBF7r(0659jeo&+aK`>D_v%U$zuPdcTQRSX`R>HM3Wwu#ZuF!L zCT5}iuBJR)AI1E~*E+QR;2YppzTtCCO-e(^i7h^Gkj?wzP z`eMZ+`wFmjxT~1w?J~T#n6V?ch8C@1$(;zR=yM=BW+inuR!m1rCn0jWqKs?b<<&2y zJt@xs`d!#dorAOsm`j;$m+X6CPo91;c}4cEVoQ2BHnc%{eM*lUQ|>v&^y7}bjaUFME4hpOK(OWyUbQEoj`#Cu!-c5g>;P8E2&YV144@&VgO zu;~K4)XKa@Vn5k`#CO5Uam(p%X>G!5pGH$)s z)R-p}>*0=iO{}+|#b*SafA|~5Hj8#%)p@~L;Fag>@&sqqdd(Cs$5v+8Y(lOa0bXw{ z^yl3&DE&&_WuMWU@JjkP@+_nO+1!_QcX;I^e#fL@mmzFh)V(RgCuU|KWweVZPf)IML= z+OW@$xE+&ZJbouGDN6H%+H-3ccx6?6?b_XMQVQmzjh{_pOzcZN4 z4{--$bXIXacQ|GP&v6_dupRog+xE@i9SL|nZ%D;@z+HKQ{o`JK{8F4N`l0dO1f9ct z9j8El9xL*gMZ8BhkBvTM<4?7L@m!hI&FSPhCxH$-js1FA@>+lR+K7$k9Dnx-oj5%W z{0Hu$KO9yzTD0%I7XQCUo08!K8y$oGXKAE;@Vwg6hv4_s)Q4b9*S6T--!9^};-0$a zEbSz~#{@wawS=|{p6dLlZ-WNO7REgVt%o{j{o!^6yf?Q_Vwp zW-tEZ9$O7s$5cF6Hp;WXJDH>4sVGYazPx2TH;Hcp@XqUt0f$|HL6hS^8OHqjr6}u0 z+1nfg%5dMmej&`1qVIRMHeSkyYaw`r1%a{j--!VQb5zmCosn2IDWBwxP&min2rtm$C z;e5cRcS!dCP*VS|+51=Ri#*1yY)|IfoyPxdK4UFmE=Bn5i*{3Sp65tAtb+AP?MCeF zT5YuZ^yR=ePHnu6(<8WhvLx?SaC1@{JCoKXaK6+7_Z7IQ2Y&6@d=>kdddIjP`1GA> z|K1)|x_Pu6Olmt{=I1(no8Vg$^(<2ggg*B48#t@lu&jSsQvHy9Y?gi&yz5b$?Hp~Q z+-T=I%bytSoR`$jooXDPv*LnVZO)Xj_i@*cTxrGn2VQC8 zaBlyCu)k%NksEpRuAogPd~w&!Dw#};i}COPRVyQrL(PeZ#Y}sG2;I3@ad~V z+sC9G=Jv5MVL!AzICUZEDe#_X>t4XoB($}Su*9-H&g03jPMS^HV}{4=F~wSY!&&M+ z&nQxPDY0Hx$+B1b$MrmAcKgE9->sLnU7=B-BRu`BDyh%hL>K{oY?2Rc4KzkDhK79F zuLT;LuohXdK;yAyjv*}OML8U0Ax^w^in`MdZ&)vI=lB5wkq+D`;H_KQ1HiEXf%^w- zd2jt{jK?iG3}D1Q#>EwKj5kXg$kUfq$}xVuU+6x0KYh$xoHMLEy2LZ6f4!=oYnwaq z$QM=lc`82O=Y$=f=h8LJIE&>j{dUZW^#x9$4e1c@N((-*>q42afKJ)Zf^yw(?(*oV zRX*dcjvGTWI#9lO?AO%UWdScN+vd@4Z@u0zxiw(0oVh)-*gkV~vTh&RtMup@!#9Lx zk;fR8^}k7d2l$9(1*p&do3C@E@}6&&?R=fjRXZBn5o5-8+blg7xM0OL_dAU}0eyK< z8uKRVxh+0prLr;4mbBtO|7rQK19r1`$6)P$sBHD#8pM7l+3GFE^DoG{zy5UMS^dM$ z)c z#k71+_#!3W9X3Go@WR z?OY~~oi-T-9yN9m!?Cf?T4(fKVe9)*)%RD=(f1nkovHf1U-hjet#OxHhu%vM3uJg!+mhGpZ_9&fK&;+mKLq0uG8$Kuz9zGd-ig7?z?2HxxC z&1y^!o}2fgFUqSgNc-!jza;Y7$~jI0UD(wp_$2}3lldR*n7AXnk_UL2d48tF?WSLS zn)jNmeG|O@n-=}f{EmHs7k~NNar*t~OOo1nNZySve>ItYSK~^hY^u$t-xB(ju8CYK zGG4AmdO^yqr0sVpc&RQ$qf^!cIP|tJ2s@Omz3|;;y;0Efqh3RNt7je)Jiv46Iq?p2 zYbyEf^bYU{pyj*hs|DJgu|?-$?H^>WDT}7>5xHMq{!N)2+uhxQMht6(9^u2Q#ROm9 z*vC4b0qsx>dZ)-|JOx_h3l?pQGcM?=X3|1o!%u&+ez|^|rBBq$LS|YiZ8X0l@^Pt{ z6Vevk&=l=9N5$35QfnyeCS&w{ED5Djra~PQ==HufkC{>cz61NPkTQ8o_hEu2ER^^k zFgW`+1wuda@^`Vuv(Wc)>c#oabesvw%|<~_KH|EqF{+(e1Ab-ME>Io4peI2er?y|; zl*uu+gJ!jGA9x_mia`cGW@ZmyyH(^<6?*PTl!LU1=S}I9X?4hT_-v{4d&y@1-57h6 zIl0_TpeaxFw_twl{N#l-w%3yvP9MNGXvej?1)X~88R^UU)GrfZ@|8cu z;hJao)GkHunxJ?4Cepj79+UL$Q}-sdb5g?gscq-*S;?o2tx(BEmpYuyQod#`wDeJ% z$3DE3=RRbeZ{HoI>`R{SQ;#OwI2Q`J$}79%*?#IPQQsY1;B}_jc_&qOL)<>$sq6Tj zZOq%G-^8gqlE;j)J0(B;)Mu0GJXz>Z%uiow!(X3qIFE?9S-#s=SNMd!e-`F;pABtH3ir|`iN?OahPV`wRx^HWO- zRh+h&ln*?iZ$a75N+r+x#V%=w&GSAq(02%)Ug(=myvx0QPSaPlT_2oE`@lB5-;452pT4r(W31|0-IPf^ zO&7{3-;;1UdSgL+uQU6^`8Zjp&hh~Bb5A_WCky3SesYV1gOj_H&jH&}@%qWDp2a(l z0k@n@*RWkOg^W|5By}zW>7+)o2@Wyc*ukz)cEV1-y zyc<<4fmtYLp1G`;Z^=US|96G*oB0@L+TJ5BpNa2Y%iaX{oF(s_h58rc*;ZNi)K8+m zC6~oz)l0ZOkJ5)B&T~7~-~)c!aW~D=!Fy}?pv-xib7pLb2zbfy*b+NMY>Bqgcx;KU zAG}m|jrxKa51$MQol1=Q2`NiktLA(uZxnf$Nli}JWV}ctl~1ISaG@3 zc--e6&xwB~jVD*Ocf#_?)s^3Vit^c1?VUJdZ_hRE7kA=)RWC#3vUJ9CbDsPuXvNG# z8}gHPNIK%g@R0P?nAw@|{KOyaF}Ua>9haGWz<3&SEPM5c*95*kq5S_&bSBf9o5!~9 z6}SX=N8;TP#+sdL`F)oNznc>+aa*db<QCGFvWuycipjH_Yw4M!-}8yx z&C=gFFe-cnMBII6XPyCkZDg5whSuR?OfDm(-Gxt{k>2LQC(rP=y70*}GFw~*<*<`l z@{FucDZ9inkM8Vp84E*OL-d1jD_gg0J8tP0<2iAc9k=x7nZPYuzZYO)~~2F-f%7-T6HIVx>Cd#7w7LHWuq(nNAWBmWj^CDag|MumRjrL z9e(0J6ij@V;}}YWi3?TEV_`c9oRCwf;uFkNu@h16EAhK{YmW2-IB{L_U5sbh_FUR{ z=X2G7=LDYvNqaQb`@SEw=#HqTc3I3*yBxUfX5g_){EcHLIakhqDPXJIYyNtd*UT5b zR#x7basBeCn@F!E!B~zR#$1hKA4)&1Fm0i|GCskHr!9Mjq@16RtDM1r-+^vhY|%+& zKI5*4@I^VHVmqHmO*~_yJ$}_npNdYOaZ6~c)Nv^vMXqgukRdpa|0AMu@8bQ}WekAh z!dI-z)>izSetcVg+@6)ORB%p@_r`4#e|1>3@h-<_vq{Vz0qo)2WbMM40-Vploi5L* zNB<4Z=?ryFeY78ljLSf|KF4ErU$^mdx>MMbE4VoRvbD|_!|&A?j)^jPKCc@TU1I5j<+>g}pmf5X7Fqvl)>m*pTjG7gq4ae#B%TNV1U#=X56$)< z`I1zecjB>Gz_n?nka-B+Kft#541CMkPA~ZsgM7*~j=2TxbWt~08g^4Zqt4iD>E9a` z@d>Ryd%PxdS;{_lI2gAewMWF>I6exTk=7gUbJC!QQ6HwA%Gm+0=@-0_Cj=Vr_)heh zZp}~mYGF-|e~Y-q+P|TIvDo@;m(QpiGJcUiK-wZLqmGs~4#M{pchlyvvC9e-uQF5R zQ?mQxTC!8d#~5V&G9y*hpQGyQq$^Z?n=gZ94=HGk{7?E=_7Q~w&kansViz-C3g8yB z594lsX7-t`CDj%=o zX%p|(Cm7?~-|92gfNpUM-)>=>d)%Sw{ET;Mv0u+<6MWDUZ%BQ~v61Av75j3bvD@}3T%&o=3IkqR6HoO=8l;5%k^$#-k)?}kc)^a=O( z_zb<9y2-6((8~2(ooNPvCvh(w|Ki|MBUj3ro+!1~XFYWeQVRqffBb5|e`>FM_nG`e zIaJ@~vEj?@cuewT$0Bh&_QY1TCi|21*HRBX{25z)<&%4?+{%^EPdg47-&)+W{Q>$! z9%H@$@U~CfquPE}=$aGvjy$wq`7xVC5;qC|UxgFrsJ`s}ziAocbltJDiaueS7q5(2 zdhBCmH?4d+k3AHptDd+)jpaT?E7nMT{1f!q^S4lsQ6gfGYMcw;w2SAMGMHh(Qy(+q zFZ9AeF6Lq z7|ZA@&-Ot_<;J`+K4^-Fix76U&^}7WX-NZ49%+?vVA7~V?~r3JQ}d*J>AyJ7PT(bp zvya_O{M{~W)WY;1k?~+K&MwLcOJzKme#V2LU8ogrhQ7`+9*m4PBm3D}F8lZzWzT(> zXMraOe(cyaA|4Ft_m9Ve3CnmeJ507uKbO7{?$=JotX#(X7x7?@ZB+4Vt{IlGV0ut? z5%;y3AJCMR?tyq;#)>)mXUku@g*HQgU4AQ`%G)a1I2yC-Ut0sl#hb@|X*>S{&b}q} zk4HOIoNexR_JEWl%qtT2{h5`;ak^jW5sqCS_d7rOrt&+d&VF*6gx@dN{Gn5%KlHI{ zq@VfGla`;kj4yNasM5(%rzhja?2u=&Tb#+Gycee1{gemg{I=QWHz?=#m^>>-E6+tA z$LZew2YAm|__|Wy>!UBoxgC98*fb}c`Cr~nyrANgI8{unEZ%p*H{L-zL+WCV=2Leg z<#NAVC;9cGzp{^obR({jLVUtf*X@cp9PXR&xjX5z5}&o|_j=w%p ziAT`H;4hCqWyM;+*rHcCggvU(N?ZUOMZX3qziaGjp{+}xaR8qod`4o7W#G%99FzB; z;1|Q=Hnn1Zz9VQUmy8u9^xJr!&ww{FIs^)rhn6u{I6uy z1yOCoO~BV}o5zOU%a6x`qwQ}S#+0MRenGdQE4uAtlQ4H5+oO+%RX+Z_RN&g5)Qgyf z7+0CdZGMN0qjU7(S_$)$hNXSvwL?iXhVlzz{I0$p;13nwdX}IGWUQ7cVeC8gFuk5I zbtRJpje#=Ehw;}K<97ye0n55Qri0&=xu)>bnoU}0hnZgNzMxp;t@48w`Yi1LM(C?` zQr_Y9<1!(!mM+_Ge|#;(TI*bk5w7*qI@kIN+gdNjTCXY)_wUeF+geYK3cHh|pS5`N zptJe7y!)DuTC(DVb&>dP?kBB#{dhc7@jJ!#J81hIvccYYRvd+T!9O(buwp61Z2OJz z2V>fXmB3exc=smomzVM^p==Gx>QVN0l-)^qLfLAR9YEPhlpW)|$rDEW!q<{^gDHY; zbT*Gw`)O~f`)z&Au8hZ%Jy`9%t*=zZlLgLben{j(a5jI?r{cs(op19Kl!sPJUDLM$ z4(4R7y@mN&3$%A=6T`cXKGm}m&v5gPCfKOpeLka&fr>G89?D#WB96{6#t)jEXy?-W zt%-4}-f<~A7k^Bn9KKn}|C^6;%#6t)ZMd3mlD4SLtGEt!pEA}H@nD?CZkKwG$EQWL zJzYgIf8ZP`_xRxa!g##(FR1*W!rsRupIIvWS{GHyHM>&vwMdO6%rQth^RY3uT_Ef& zD0@Hl75WgUwf(fUwlf>YD!D!=%T{g784)oWnx7nzJSTH3I~2?Zt0g>5v&p_)pp~yy z>ZuJL?W4#Dah9RqI{g7PoqT4&TT4 zJ#rn6O}EKtRGg6`-FA7u+DlJ-Tt}4sZ}V4)69J1UGN#Cp4%z0B*6Kt&$#~owlXON0 z<(+eDR>`=|sPFfQ`flpOjvQ5EI+Cn25^+L=Ug_w&5;h(aIlidZmb&T>7ut2zjLnI5 z_QvH;kNsS|uk>6;-;_F>BW0hUtG=EzC+?XqEBS#XHxAM^-OD@bS2}rqZ>8IjiuFmY zmNuZP<0`-xOxGdzarHrkX zC<|$NMV|4dQxjz&zxWMl_D;$|N)5_FC{uJ|-LAl1Wk_E47r(a42dtRUQDL92dqi%M z65SiOb2^fv;MFUA4u0{ly?%_c2zkzz?*h-Uh_RnM+ZhL72F~nB8!xZqn@vLh-y(2( zSlM`PcPjbjR5iC>tG+eLI4P%;Hdep*zT`=oerd@%ZFcrEq%^XSaOz1^YAB9ZyyE?@b@Vm0pXB+FO21HyN@t2@u+dl!oMz``Cz#ziZ^?}(6#H2=hk(Lmk0 zTBmERm`B)eo85O)ZA8Vs9T7OEsoL^w$M35Jj+Em{RpYu+$wQi@yy_PsPI2fdk+%W& ze66q<3GLX-*g-Ci+0xBm-A|BCkMe(sh<{7`FoZULBl+Q`^9JK_#C8z|n?Y9tCrq_s zrs6mE>8tprfA)0XfdRbxjLHS%Mfoh0U(@0fKCb^Q^`55C1s7z5U5q;z!}_(&GIEQi z>;BfIMlRdH{u6(FO2LJ$_#AOZbQ2HB+&7w%bNl#z1nrj0(w&{mZ>rvLsr+V^-!c6O zcFhQ<^rD}bws%c4&Q7Vz$RAi0%oqq5%P{|*sPOML70w~=-FQUeoJW}t$Pa$Ww0Kyo z(RJlwts39#QM?W2`5(j^7Osp5`?IECT>jK}O39!2?iv;QwyOp0wqfqA=pXoFp-pa= ziv4tFn>(J&u<34STk6J!$JlCWr+c7@ufm!ShrnChN(4>tYOq8QE_DL9R zyk{^$j?(xOCEM&7!a5GyWSc{BFK?9b-XFb2o}b1aB+HVmxMWJcE9?`lqRk}WtIC)2 zG2qA9i**~q^YSU7tRBD;_eaR3P}VGbISpq&-iZl692ql)aL72Og&D$^%GZMD?RcJp zwx82(J5!t%oZ3dYG2jw=w5;5#=Xc*2%wSe(C)zU67wHsqW|KG9ka%mO~$!EeQ z$7|9i=iB2pIe8{+a+ELD2mjB?eU%5iD%az1%+g;|FV$z$Uk?fW_2In|_O?8)#(W}C zt}gk9`iV3~MA8`HmNH3Sa8GF4GAA-FyCZ*axLWSV;VRy}{R#BN7Um+DHA=t4or=B? zx|YT{xL-1)u42o5@%0z<#cau2>dQcbd4x@Ssi6C(5P*&&D>4(+R z?9;QGf$xA5e$?wzF&2gY0Q(so=6;XIhAm;7iNim#!Ob;l4}OpwOZTyP?93^fuU~q(!1sr3`u{CCs;>$9f5pSSg*M)>wJ|*`=!V1BDEi%O zrwm@mgys2f7c}f)>f9%z{WR6Su>Z5$jnnR&a7tddNYV>8PW0V5oSP)m_(;IElxcXQ zLe6|RzeM8rdphUKScC${;~mOX8DpP&P%3Oq4nHdOCx@pDNuBh1aWCvJ(yh4opvy-F z1RbDrpTAA}TV;FuUJu}>3LL}0QazV4@Jt!Y+u5U?Sp!&DR_xJtw_Mkh-XiV&W{UiA zc!&H$r?T4(Yer4`^-cbE`Hrt(f$r?ZGk)iLj6>b4Ln+;O=0?A<0N@pE)H`l#teWDO z$9@U>Qr{x;dMW$fX{OiIT1AYSrb#N6J?Hslo6coXo4n6KpC0-L{RrFn$ul(8HS>)0 z4zHQgLA{8wkLeUJ)cI-ggUsZ5cbZNA^`rUdhq} z^aS*aH;?`N(Kx*FZajRxq#q8I56iej*A9w1^H6C#9;O@<`@@)O)tIKq+%%*k?RLk9 z9#Hts9y^s|xyL@1Avu=sOBg-$%jEM$oL7^C^OicCwZwVM0i@zV18??FPBpv6vb7a4 z?+)D~am=BgO|-TBIsMe;b$i3$sZ1GvsLTM)JM>~$6XnIrMf-&?5*iCFk&C-Kjr>*6t|etw>`%RD4(MSE@I zCM<*Z*70nAC1{?0*;j_WFY@KYnP@lE;tglUM63sc^76?n!`@LZI;S1?SR3Y&?>1g< zz21@1nipQSdF+ufyGe&i#2pH|Fjw7oUoX75xhXuw0$m92d(>ee7A&)Q? z5$!$J;0|(29Kv`G4X5KcA9UHE872B>yLz!N2Xc%Psmvp00)~;&O{eysG}9WVyxWv4_Vj+YNE%yyUSC zudp`tywJR*@q{=mAUdpYc|P0K1yfQQ~|y{Fv{N4yh5bQw|Py%Cr2Kh&>?l8fQw| z41EUL{Xwg|H#gd1#W6R}&B{JGUFDk+d&<0K-K1gMO^hp?f%k5(d>oXWgw{)Y3z?s7 zmdMK!x5r3lUwzUZL*$lfm1F+AlEI}Z``fjg18uRTztX`$(hxDP)E&lbHW}@-x!A63 zKc3cIHk*tz+6Z(=n+y>@p!f`x#a5x_4{oq4NH!1L>vCgt+`v@>(M?ubD}kh-T(r4I4Ai_aVk}?FFrm zPai&%^D%DFh~h7RTR(m#iRTKU-^td!jeg&jG~huY*EJJ)u2d-#IJg1ldupc~=O69k zq#xhrvA#R(_V-~StFIr5+lhrv$v*1OB+GR;c4Z$d=1@fc_kj42_DPwT>)_zmt@{^q z{b8G=DbgfOesHy-m6SZH{!Img!l#ii2p*QUU|&--^4V^$xZAjvHz=9pmE!I z*?LW)O|r}x97y-9yeyPu?KSq24JSKbu*j87bkwsliA83XiueofO zC%mHj2FDEISwuvm)ny0lBlQl_L!%Z^ua^GM=Sk} zW1lAs@$Bxhon6ox`xULRxI94z^e+7Zvcu}^mS~jG)PGr?-TG@Mp4||2@YDJR*7TM5tRiiu30Y=nddfIYRR2pWel7b%^X zA%EI2kG9ku8goO`e+T$uk}2!f+w1Z96gu`D;6szjh|= zc$%5xgStw*i{D(=v}l0*jIIe=GxQ&N!k|4w3iX7_zuJpCU=CxX1LyX!oc}APm`;qR zNcgnNJ}waPbu>K~+8IozUR}ih2HxsNnV<131LVzxU6PkMI>bFCaWv!ln*8+e{Xk=v z!hxjCvKTXIFhE-UpjpgVMk-Gg?T#Wi7d)%{En_Ua#8_VQRJ>)6H=zSL&;QkD4FUGB~#rIm#Ox8 z&E;IzOab?l*}YT&oZyu>VRM?j4|TW9l(|otzcf4^=ds0W-V`cPxll_)F4XkUj?koq zgjXRGf2l~(tCOV8_@N?Ox!P#x7B{HAUmdO~QvJCf37xO@1|Mb29_0$g) zu>XFav}?D;KpQ{Hz-Mn1#eG+lzfok5nvXsxa>|N1mM7;!L;LsG@&U}nS$L(;#$Pti zG;>jJTb#~%=uWjBze%REge({En(w;py_%F@%Fq%s7dYFwn7Nz)KP>`=M7(X^a{6N*pAIh-TPn0zd9i*($I!|mD^-C?Cse)gZy*~X`35(P-;Csjf3=>{Ak3Bdd&XKT( z5w_jDV?SeqE2Z;`s9e608N{_c(q7$$(<57UDV*Lb@OUH?w}XtNBI>pc9gih z#FFz6mq)%9=bIkfXU9pPizf376Q(I&Ca=Z+sPo0RzU#r#1l+tsDBF~EKJ%x)O|W`8}y({?ZG9Me=L4q^nd$S*QH1~$fglh_xxlU9M432 zwtmLn0L)i-%tbvn1ZVaD*LI^_!OJPxt>m$4Ka@PyrgswY@Zo{MobXzn;c6KljIp7r zK;OFua>7QX=j{O%8){xg$Qj_h79g`SfG%eI-7tFweD{$9gJ+ZbQZnPZxRaN<(uNGTt=S0c|Y;?Ker% zew()1+mh=f{6}YQ9{cc0@>_{I@Y)yS`BOGMC}rxkrOEhMtWzmzrn(H=C#jMz-1HNB zU(7*kV%#~vWxZbgmU0dJ)sw+Y>aSRiy6!k%xas=|Yg4LA-b%*X|0Le(GC_ageu}7E znH`F^8VLv=ZH@YWtlKS&QAgg2v{t#|tvG(hmWkmVmh(U9?-FsR)zbGmL*4UJON5Vk z?f2ud>rG44+9>+JHacjtc^|i-#C}Pej-Kz3ZczRw8NmPaKgp;Ryxb=0|LKQe&1*jO z=B-}vbEN`@dx0mMZMcs|ypo?A5&WFYB?y|uZ}EFU z{aCzUt&JB1top;Hj=A6kPbgmSJjz6wt6SzLs7*=2Z^|dM_Fm#QQ{q~$diSTaEfe+w zrG_mp#euh^tl+>$>i>s!o==@CPoJ0k;DI-UTm`>Jv@>gJefnd)H-zS*yt_9~UsjbH z!nru`4r!Pk8_$TozpiMwNs@+pU|+&n(}wSkX~P=<=fi-DEBuZBYU7$%^a;+dThS+b zL7QY&D%u2adT-P-yeaO7XFg-6Rq6$;a-dPo>rkR?6>-`F!v0^;Dnh^1B6zpjfa1Y2 zBoFq$qX}oOB&=+N!!|mzc8;2(SIu$bIds~JZyUV8&bLWCT02R}NK@q<_rUrjefnh5 zqwT!gWi04aNuM4#8<)L2@Ev;{i#B~u(WV{awCMw1joWHlv}s-8MB4PgUF!SJbJL~= z{*p+W9{5w7Ha&3bMB4NL#`>E#F&?(=<7DUh8^;)r zE$b8P#w(S~&`~xnFEnRaHsi#HLS`uRlLwZoabKMryB_`19&K7w_|WT?%+QT@OXD)b z2i$hq))gV=3Bc|aNe?+2@XfofUh1-GOCFYT#FDU=u+=Jbmk09WH0}Lo?CrG*J90sj zeir=1$O77tYr>A4v=sf2vJzvB97vhqONsYYtPy2LUNffV{8Qp%%U2S8N9DP%`8Zi# ztEv5O_8B;9MtX;XaWBkqJMw*^JD?DzBh zPqW#v&n(67azW?UHcr$L*ZjtoYsP-Yv_u{80n+FxGM97B<8fN`{+rd*!p`T{lX^baO=`iv;Zfu&>5ipkZjKhO&hli;u?oo!!`PhA(@QEw6=XkA_y4O4^ecWrNbj5kIuXUf(&i#MyOt5o* zT6fim{FOC#OIg+ae-0>p_K>u57yPlMgCu+c_bqIvz4&~`6KOIg*fP}-n^ zZOoN90x|)|lPB62?SJPSHjpz_erd+AGBKvFR7hRm`F+B6XiV8a>Ku0xQ_!*%eJm+Z#ay3l5U)|3$wHtsdcYLtDulzZ1KmTSHL&`5%<-u{;? z`*y~)7_!;74~sqCUnKbRggxE=Yqh5j%d@t>Jejw%Y~EGg2x0R+jdD5Kyt{Hf-ZtG7 zc~^y>Mw%mwej3W}*-M`a@Pm%>8HSVjcT~;>Y4g65dP!jqFKpgv6VEy#E_&zF(XO!}~h`kCUWd(0!k^ z<8sh)j{{Hr9B_R#Xt}F-KcXxjWz_$@g0i<;gdP2GG0N^M^k1+Fcl=|@j(#I}*{QtW zExK>1!&$-nf69JwHt?7)>ZyG;PWN?CZ$77bobKaYzyEV;4l5?|viGG+dq!i8C2uml z%(=P$#keifeJM$N);Vk#_y0bw6Wn8^(=qf3gjuaSj{CF4{oNmNtxr&4!UVAvV62Y{OV1Y#8_dFwur_X4P*71PqtwcZC@^J7&l&^#<(ikhB4-;4FhJ@VeJ+H&-`8S z4Po$Dr0LTmf}hmCBIDxgUqKrcj7c$?5cjhB4T0k%?%7@I?F?5cy$1NrQt&3_=;M0y z!Mw8lY>#?T#%LEjgOtPVuJm-Sw{m*}XQf3w8!F;B>n-M~%1(@TT&?2AS7%JbS@-_0 zkiYq){7u=~@!d^v{^Z_2C-IE$;T^{3cvt3brT>Y{A1m{nSKop2;FYlq?mcai^JUPSBm>9^!-VP|M-lZd0%?4w;$_1d^>>fQwTAD=7SG%Zvbbf$!att9Bl z>aSSxfS_~V{}6^{9KU;a%YEG!OZIJz%gx_eVUO3`C+O*YC*nRL_ij^d97(3pg$!&# z*g+n;X+b!peL+}jquhK!*x$AwoG3T1gDr1vtUY<(YPFVoar>BC*i_y2175z_CXRoWNM zmT{loxwlZ-|7gr_%pA=8?hG{c;M0ZmzDCIshQ{N=JNG|qlO>YR<-Z6 zlKm3@3HdL|PA1xf?Yl8<`*!ahp2Gby zNy-5>{LOxDVxA3ESi?_aFE0cR`$*xi5NV=vfnyA}irch{GW}hi?`vf$b`$W-=Rq^q z5I49&&a375cP>-($jr@Se~wZgU1Hg7YowK`hUHkRh9>&cZ#Y64uwOGo9zN1aEgEU1 zecuE8XGq#-!=VKG>k<(&DYaQ6-Lh{@+`eMN{)G1=ZcujG0yhHo_pP$zCQB zalOI@X&owS~Z&z-#H2y`?7d zfQK?^SKTMa^oEK}_aDPj)-ob&Ej=M8o;^Za%U;xF8@+iF7c&=b=t*Vr59X z@Tvx7yLsJ^%sDsGM%zkZ6JB)(Z7W4xwxMjb2LZnwpy32B1~}q>@=X!1zNGucV0L$| zv24_$ZFZ{jolE+oO4#HxkDtViovTG0A*l~h=e;UL(kSq@yNbNVO7 z$D39lgwjMs7%A5YqDRy|OmXhkV|t-9CJyH*Ol>)wBf7%Sr0 z-hWtj+`yG1qc%J4Au-3jZ30&&%xUkNYEDNbJnrpHmb-C%U6S7Pa@k>BTdZ|03ES3n@4>`%eS3J~y6&x3V<^=wZ&0 zbYMYJ%sq~E^H}?@3RO-X@>>HUKJ4Cos^7iIw3yu%F3Aq&MQI0P-d#Fw2h)DH-3~_D zwCvrc+AdC(Lo?S3V_095VldjC(44 zjrLwEL-_BON!{R!m*}ou--f0E--d=k597>K z-O6>0;y-?WFXr121rABU|5Gi#4X2s!3gbv)3{KQJWvzRkN3=b2rqDy_jy#d8V?)D` z@5lN3(8r+HF=s%w`DI)CUqbtBw)R_O`;{LixBm#{SR~Ha+wWjr&iMa#!ioRiz1I3K z&t&)V#OK{VPJI5}W!C>f`TzeV{r_X)`|oc`eE$CL6QBPzJ+Z&O`APrZvi=u~|9^Wu zvAr{)r2l4O`yb3sY;SNu;`<-onArZ%Rf*3(nxEL-@cD_)ho4M*KDIvb|G$nT{eL5I zJUyE2zYF_yukAl@%iBLoeE!a5iT}I)$JRdnzk53I`MYC@&%2v!Pvg$l5u3CnO z0iwIX@4N-vF;ZyDH4;Jnk-$OF)_Z#M@w>vMJNp6$N359cl&2O8JBouN=ttW&9<$7m z^80rVhj*!1n2XSVg(qxUx?!~U0s356srncBWwc??{grJTOB{Fac`x6eyI%20KJp8A z5BF!~YkZIK8z^Jzq8*;J!OOxY8y~$Zcimci41Cs6roh+-Xz!JLjq%g>z70CZp|@zBm+mf3+kCbymvIO8oXmIYPTKk5H|?Ra@EbJko+J5Ki&hP^IQmsOts7N) zt0mt@e{NClcQRkbo*LE}&pC*(VlI7{%kR`&KCi~{G~X}8yHSn0ls&&E&&0ljA4IN^ zDe?+v2J`ND>BnZGY!vep@&T0dgEh#+o$o00lGfQnyQ;Jv%}7U^DTN;T;p};gwpEnZ zQYHtwlQiXX`5x2COP0daLwcx2FBJ&dhLUmon8-wZVN)#RB@eD@5AShjl>GM{j9!mzni^b0~RyL7ZE6hlm9x$JdVWb>jU3@Wdw0>hs4O z<9%~{qqgx4_^k0clE)XcjgN63XIH6Q9keN^@+Z*sj9)x;i1A${obCvfh0|-j@7z=p zr*$I1Cy(v-@(*TYw7!^o85y68^&@T%V}M_@5#yyN?cbsW^pTLyB?i$`+J%La4J#pu&Mr|>A|6m;(XpQw*`aQ7ea4I1Bu z%Y4LTyI+^_GHtlbM_ji1WmTSp%XX`nyt|J`S?lgb1smZSwSM6Dc0_y^EUT6L9(c^% zrBQF+z<~E-`rlF}CGHBLL-c;^@ArP3+2{Q@tJnK+dXM+xZ05`D&(k&L+pxo8Vt@K6TYry7y?@(?wsS`*&yxL3midBrKZ$b{tXKQhig!@<2;Z-d(;f3h z=bMf;pRt_2RT)-{MQ?u}*L@&hr1t}U`vZo*4|~=ZFft`v8x9HAz&G4W@RwZyta-rD zK@;>8_>6_r9bhkeC{xcDy0kq#%oCt~zl(S1KhTHs>=);m`u>2ioHI53w&n5RllHd^yQ32 z`~2~cL*fJK6?R``y~p*p?k;|FUDdb!PP4;9Dfxff{^$xG^mD+&#ej!}fQQQf4~qd0 z%RT`fW+cMHp*9F;ov zDIE*U%yyKw2bf#V)Y<@3!2c;NfT zODU84KeGq4nW8(Vpj=B_kKO-J>v2%}j_-OYd0jYWl>Y-X|MU@$37)`k40}x4=x9S8 zGi4|s?v?+I>rV*RhYb-23p8jPmh`vcu(anqtk0N=y_O<#On$t&#ryG17*lH^AFz8% z)1{4L_ezyYyV}TB*%0oOAcB z6$Nf1yVYT&Kin+nmUQA(g)?cJw2-)_6ZeSXeK?Mncuz;^A0+PuPpL*;W|zp{K))r4 zpDL>D^g3gq_iEGy=)jSNA7@zW)&vhSxf|!2aIET;vfdDAbhb5=Cw-U1`3HSY9Dw!x zrY)Bx@4EH8>#$x~q}NF6Fo!#7AjVC#)~48PI2k*Yx$B#7W@>$nQS=$5-$V>`T6|)D z)OR{1uT`-H=clJi&S8!`Qx!jAJVoGW#?+XLx>4#+L7%pCXnN-JM+J?Tt?J)xtDnX^ zusy)PJ$VLg-L&pJgSp~Ty7C0v(+*-b-vM0{RrS}gK4_knUQamt`Qt%{<@0CVx$=&G zu><$IhL1n-u70sieYZyO9`!v*&!g)5HS1309a7C$AZ%COCEK|#HQpC)FYp-I73xkQ z9>VyR6v=$Wv-#VijRl<~%PuEvs%WxFF;AT_K)Ma%AT7;zq6==VpstuY8a@Xcy-#=^ z75R{i?B`EPdeuH>+r6?KXDk{&V=q3T?v-`txL4NWUb!9j%3Ziu?#8{c@!a>yi<|BD zN|BPWiF_&Ouh^{{g)&!4TDz-m6VFvFN9LHs{W4p_+^JW`T60}Ds`cH#Jb3uN8{b+r zc4_TM?hB244XT|*H(pTvDMPV0t(``9TGebK@sJ!1QnjHNGZgo2a2jbmrnCZ4Ae7x){;-cWOh@OuRN zhCS1O8&aCEZ}|A}$&9bz!Jgrq@ZGgCc7#O}lnmsAZy(7C-v!#B6!+!Xh>9CKjP~%+ z2HaupkB|*u{fomgH=S;fZRJBK&sXKb zPH+Ht6=zHHi#sXo99W<`%00TqwNS7p=6gls*r^uL#_n7x8wyi5J(Y6D7cVwly;uXR zWmhG>D?E;=y$iyQZMZusX?MOon8Ee{*Id)lUg}(A-1Td@r!8Xds1J4BoVa)Y8nN$P zt2=xb_RX&B}I#d54mdN*JkYe(6_)#^R16lb4s*@Zq!J$eei`Cb=3-5TSSAG#%~ z(MP3x&|a_JBlOnVXyDLV{LbVz;OCaXfPhIS;f!mtjX6B9Mx+I?&M&s-gdgwpEiGq! zXwaH&oQM329FALwuR3$WTe0p|Tp|zXLgG&mBU=96b%;4LYUCKU3i}Y0ql_{TN2ieI zy?6)C&{hSb8HK(>YXB=1MZQBf75fgY-sU?5y0@HuNd7kb&-We5YQ?h_`Cb*C{i+@B zgi((9eTnx7+pofZwEa!IQ={5mA!W1WA|C?q#wBxrTje<^U(Xmn>i0aX+a*etGl}?R z_(CghQ~6Bm8Dm?pT;0)rd3ThHa~BpgVEG*EXXH7}!5rf3%a^Z-Hr8THk+3{_bL5y_ zq`k?U9>SyWcW~}cg2y#>c;vkJey@0+xW~CO>HSsq_bFrP$qBCo&7{R}6FlE6Xp?y? z+vfRxm}eX~*r2}??$EjTy)NnwgJ#%uQ?ZIQ$v7{J4b~nwRsBgf|jKD*?9(m!IKtMQ2Q@Ds9TZ zI%)z|MPGzr=Qk4j`sc8{FO2(7xR*AO?(6d{ZOGAkpWh|>+EV6gc#D1Y<%Ah0!cne$ zKh%pcl-kaRDbFQi%g&L%U;HSFdqJHKkrTBO<%#E`dP*-f8t zE>td+o%E5KE@cxt*Wg^7e$G37E*{VKiZ+TcrqgmP<^SRuRmi?V@*W9iVjZ^Ny%&Uy zN{O(uy{}TzOw>1k2HCmY$}i?sHdW1D+^b=O@g*)P0Iaro!nFSZ@7@q;#l6rPXlQ8h zgu%l%G{pi9Z3VuD$UvZ>1)peBpy3ogSi={8E$$xK=USYDqy2$~s(fEVRr}J0n)4lw z)I#?=q(`41{mFFzt@sZ<=U8wr3%lFqn;U9D!|52y_3Wom*s#4A%2zQYF=i1$@xOCQBU=^W>CdN8xu z9o|H`q9br9UC=Q*f=-<0mFhfC0Ebxl_;zO6Du*Kk{n>n(0^a^Lf_!15VqBHt26Uhrbn!rbs{Fog%&r z*DmNRI~(J3XcanFUM*1K+-*k{RAYEYbF>Rdlb|I%- zkvQkGW+Fb{Nxv3<2WeW+gDuP-R3iGB&VEd`uj%7@Fx>T^MazT@Ab+cz8hJ^5oJ{Pa zd?(MyMGj{V@Pwbd;5N^#dT6_2@?xA>^3g-s(}xBo;-SXet@>T zp=_L4H}0O>^FbmEF90vQz;IajTI?0Zfc|&d`?vD8VjL$667?SAIj__ndKqg8^O;xR z6*7k$!heC(?XW&`H;#?#M8FqW_0{tOmTo~k_a{ByW7#2*hOZjWmpT4?hwZs$e{Sb% zEk7f?|4dSU3FD~}a_sVatIc!hX~IdiY|qzv-!8ZGh^V{8S}&Je6KfqdTI+!FSp`Dg zQ@$xb&evz4jJW=OTiIl;X(85xW$nHn8`yWiarxcFYJ9GQobU0uf5JE&wsC&@6UKSt zImY?5bByz*e>2V?-ns7Ijgxi}c<&3AjRbxNmAyxPO*~KM^WZ&J9=t^N*Ls6fUs`JT zqu!5Oq+DXhc9HK;>U6Y`rHw;Y+fCr-7hUF_!yGOJo);dGI+Yz!j4j>DqayQ!?qJ@{ zd5oDF-{;zepq-nl)flEZoX>%$jOM#?nm{idD{(od0`HxopB-q7)1%;jF?QjXqU5+* z&A1K{^n)*aJMjBj#n%enm3~a4+P!V){{eNE>yu=?X;!^_-@#MW_~4!0yxaLc`npTu zI@h3^c8xp98_u@%J6<1s8svqZ10Dv=w{Dy7U}KTlo)`1@!FaCx;a z@)l#FfL?5?_eGZ1;(t?4xTO-mWvq{#Lf#RP`}*I~r+~3vb!SH7n8=j_{JRdgHFIXj z@hizI>6zf)IM?3`TrFj_o^sFw%%SOT9Q&(?@4+0JgiptVU%>mP<$v z;JuJtBV;l=e#Q6DMmyU;`*+LSojYGDQgTv3Q|FP#*}?le6ZK}`{nz+@SDvYjbug^D8omejJ1=Y-oFCx z``f)Hc(kU;S-`_shx9VPV{*`0`j?n??^_CQ&9C*Exp;=NUHU&LxAY3xEN6Y}MGMA4 zf6U3niZ93BuJ6Uz!;=1(#&@}o*sBm=brasFKWZju?R5thh26E@&`iSQ!Ane6*cSvY zEZvEF3ipNUzrf3cuomk;-={q1(w%^Vby%NYaD9qYo2=U^+vS>M4&eRmm+0<@7R=gt zsqQM)n%HJR)GgZlCfj7adKGI2aJva-XA{fN#(8QVz~{QI=er7K94fA*=rb(#+Vy!8 z^$6E^H^_IDTp%@~#wKI0x|WT|_uP1I3E#tb7(-w>){1r@*yB>_P^L@YcGpEH-&8Bs z)3p%4w+#EjYx8}P#g~I;F7?h2lZVEb3v1>1@Bl`RNO&y$70!sO1Mh;KI1N~B+BU~A zHR_8j!@7X>tLrPC8%)9Z?P&`{wBbM`r8f{s?+QfxJ%LDOUm%i&eJSjBhflQx>IN|P zW1tOg9|+V9RSCUh-CO;Ey0d+Ox-QIPZ7dLRV0`&qfx4c44|teBB)iqaT;mbF#iN6^ zjO0?r81v}qcz0okNB5Kd?g&IKj(YS=;Ha(9K;$y12Pk`J-*y3+9xGHQCx5sN2Z)Dc{3hw6q86?(PZH!>eg-8MPbb-jRl z>JeBb;@<%`vkkt>di;;E6_>g7bj&lD@7DdOw=%S&X;Nm$`O96Pp|Ka?0qx!{)G_+B zJDYm6JN0hu&XuTNgJ;izUo8cnTHccruISDQSGDuZY!|ZQCyC2(XGL%x8nAwmn8!$o zx_DP_Z^k?-0ij-NOE*b@L0fFxG8H5cDWLypWk3Emb^Xm9I-$7f!s9WITDd^9y@Zj}$XJ#+{4|ojAXYETY!@O6}wy0OT zeSN9MTuF6)5ffVr&8`AIqHLjsx?j|bxk9s^!-q6J_A-Kgz?;=IU_Vm;FHQ4BekI+} z2A*E=Ra5yb^$k1D+UA+UcQDUBHP8Phzr);6l(j1!Vmg0EQK!R)K73fOK;0_9^lJ2V zlWOxlw7JT*Er18&^#Yt9-17~gk|25A`w1U_$7j`8duybwX&!Mf+B^n04VTJs{Rz)J zq0+{&`BDZwZzNDxvrEQ3a|rm`;h2nj{&nz?8TkIg&PBQ#Yd^35o4Sa%hI$`!{GlgJ zooiR+t1AR7l#>T#d0!sxhsLopY>Ra(eRb*EwEs`r+rUS0U1#I7yED5hA)(a=AV8Qw zpEl;p4vsMi$Iso&VM^>`IS))#Z0Khx#q8VsASZ>BKMn4AB0C^s6%4 z9N&E2_!RMa7VsPTasq9qqaSB*9*+P8-^eNT}Q^WeC z_xMbV^^Oqsq7v*KrPw!2>=%_h#}j)2(j5)F_y+ryHV>UfQm1cduDe`ov0pV|9Y#NN zm{?mYnTGrt#%Md*A*Y8ju~<)^-{P#Zpif{bV!hAf+(n%$_>R4^jF{(mUntHF~{0O2MY`@$=_(j%RrH zIV*6C@=u8SRGz0ao{@8+u^jJZ64$|RPqj9C9t3IUvI<;%+t~aB`+Mz+ibk2P8Wxp)=Lzhez?5yHh z%UwTb+zxSvDf;BOF8$Y+5dM!0S2*9nn6LwD`T=CMV%juK(?jw!9vAX&qr|0@_VrC2 z?Lr5w>9q8p+;l2Y&bzS2Kck)xZCshhL}k*E3l}KA3xPSBwl?N{Yf9?vmose(&v>L? zzb4}EmGSIUy$g9&>0=D-UQVIF9|J92LjU_%uhP4q%_I2z=YCB) zk*MoFa42AIYv!49Ip#sRS&IBtpq_eI(;ptI!F;NrT|(0bQ&K-sOVn6s2P*^_Sv!BD zS&KN^o&N6-_7ZIW#@$lKtEuL+z@uuak~n71edZKx2)&|y=6JO&>Zi_TXP=SndV?4b z5|^n^g{_eC zO?u-ikc+mR(Zw7rNd@jrA@1h!8hhQK-wYz&29%HaS9Wg~`6)TpLIb*OhPA41w(uNF zt2!?2a-TD)hebS=VYFS!mrfgFT6LZS8G0AzT3|%C%TicVMgl@lpLfza@0Es;H-A&Q zT>`n$8`bTdyLJ0^?q#W(_}C|S6+Z5O*wNB z#B_|m?$bKYckSANhpKH_Zd^O}_9=W$#*_eJ8oEnu%3N1T4lHR?M>Gxzx+bw5vj z#iWiI@913j{k&J1$308!SKActJfCHbu}%G=O+UakMcWfUz>~obFg@6BB3QTA)%n8I z4arA6^wIJ}K5dBVDztpT8zcX)_In@fQ~5(~&QbS0I_l)iGoCx`>DTS`n9n2qLJo}& zC2Hbt$h+=i*I-V+F7Gouzfk*VKKC%5@t&1?)P_#pNo!?=irzBxqmi-eH4Vla2fxv+ zZ5`QN6)8Mh6R+z9kK6;g!7B%`pSSd2J?W~6x1;QiajYpPpAVOmQD3trUJseBKKf9i zxD)^P1>$vW6_#fdc`S)f{f6Jh5yrj1AMt!w-l5>#7BmLB@juq$dZ}07`If>os*5y6 z%2r~1>XUeLcu$lGpA~^P<;42PF>Qe^bqpV89R3n-sSo9%?0T#N-;`_RvFq@yu1?;U z%}4mZ#)J;P@=YV>)5D0fhxl+kci8uZJ@&2BFy$iJ{rrybb!neP&DIQr-z&nk%D<88 zs2%41MB8A5olR9Hb*=}*8ixFcu=(w>4=P_KKbygEGj;H=W>LgL9ew2M`RvJnz~6{; z3i-%h0lH7o4h?mWL>@D#`x0mq=P-6foA6<6A3|9ION09v=tF(54!5>PV0C37X+{VJlh}Pce~_(oDA>a`<<-weo;{TizN2|m1^;3uO zTi;d@M*S1ak3NCwQD*(_@<=h}VtvF87lV$vn3p&Q@jB!`$?rX4-iW>y`r^p5{^%p& z;(j#`>no^BD(4};jdC8Le@o(1H?i){JS-B}&*9n5JjD0wL?0on8a&y{%f&sij{40a zeSGg0W14L|?>DNg{q!O2S_cj85ic#rTst0Sy>hsBoT&*HPYPUc8O|`&=MuxQ?_O0c z{hevp&#w~kr5@}A!#V}doayt%-~KE7`mc|_{W90aQ2gy}+(){^J?C?0gl;VQ5q(IU zpd)Hs-=Ta-Hu0Rt(Xq$+bjtA;CC6$-x57RNa6aL^Q{uC5t~D+~zDE%DQ-K%dP5X0M zpwj+O=@o*`WB_@}b%b(7R4eeR`GB={XInMaNbHf^3otj$UZ0is><=`}p%-<#nRP;* z?FySH&@Zv$R-+%Am=5cVIUX>B&;BUPbS-M1nj!b6iblt;5B`5vVZQm#mWzG<8s>3c z;++v+keCUZDJQYr)Lv>S9?_}W6D|xqw$~gLzE|NudAlWjMa;XKa+3CuBR!dXlzdmQ z)4_vKHXeowzX$x9m%JL&D}4C^Wf0%nD&j=^Px=`^&`XnMR zHX-(DF+M*f$7jXooO07R9$Lj`PK$Geqg@vyK1vRKwj%sfV{$EpoX>I2{d3-jGCY*P z>)+5R*7YXbM1Bq!+a7v<*4!Nl;jEK4s_AhM(%+H z!_+O;D#-JJr>rQFSXW0MBj3z+W16vQ8~pj)x0%l2Cx^k0v<9q|LjjAt*lhYmIv=n? z=ZRqyuvUR*UkQG-@WB}?xn4uy^dqw^}WF1?YaeTXFI%|^PP8Hv!DGD?H1)Z6XuIKMBNhE9^ow4_kEBUrL;b zYjZa-PPRRlrgiglhnc=%p52V6B$Z%);3qG>h$|06cqEhJg&g4Csv_Zl6rhUCO z_c~V^kIH9>J51UJYX$0CmFt_(t*==-HFXmEMzj7FeYh1g=t2jfs1$qKOUo?pg@Bg- z;ExiD=hAu{nTKcMy;xgRz6I`ldn>K73CJ81l>#683yjmJTV;J%WBYZ>?8kgZ_@6PH z{&S?CooBwQ*4;mmd1^1a%Q~Mft8~I$*7-`SWDsQ$yMR7u8E06xO1Pd6=~n5GEbGGz zA458zaoK&S1WZJXBw~-y}migSne5kw1be%fZDM{aK(Ke`atlai= zRa&?64q5cOZdpAtPCnn+2WW5VIOp&k?Yp60emD3&q1p|7fxWEs`FD<&Qrk^ymObU6 zQ~t)yw5OcFxTgKfXyC@wIP(+cCb4wh(9hVI% zZBoS=>v^WeS!1bFEbp|Qxt2IP+ zGbS_X^h`WrPJO@EW!rMF)j0NAqgrE!^(_-ahQ#p`^akSCsXrz3W)-akBFyvb4YoMP zd-i>jA31Ut z(y-jBTvNj}kY^zX4&2f0py#{KMrv~6y+9YP;fV$95z=e0*)ZW8@`^d;%{?C>us z+w**ae%Sge$ul2$pi{5CTII1Cd0;=PU4lFe=D~Goy6xcMzgBz_G1ZuNqr~Dr+(RDY zyv#e7ww?HPxJAZ!TArmI{#%~q(AULarQoX$xW;@A#{uGeQ{ucP-DNh(bEd;TPPPq7bIiKv>wEehdRu5s_ z=RFkuuOKc6o}j=I(UXDbVl!~0A`*;39#dGn1>`dkSNa3d%-O@@j^*%vXUvQK(9F;n zZ9p@8VcrPx908v?%Dj!~c}FvO4^s!ZxGel(A~W3yqF z(dLzUwA}{pJ)Zd??-F_tj`xyAZ_+bRWtMdc9h}2a>dqr>H`AQ;S|#N9yAZEig(WEm zoTF@QuT#8SnAy;)eb{w(%kz($Q1)#4MsBULXz* z?^wpSnIUyE1>J{9H{yKwo#zb;Kj8RkcVq{It&;0T!*@=p^MDSnhuXsHFJKK#O_S9Y zE~PKJ$?5Vw`=bWoEAU%|Z;&+>R`A>zYe~p;_8C%f%ig0rw^!hS$o=P|*au2QJ184? zM_$Xe-RDs!oU9Q*M?y;aE3 zs^YsFyqDv@fK3_29E_ z0iV4NeD)pSvu}TQKKt`OR($pf*ZBK1?>{>fEjNM|-i4g@zqz;BpD19RsDEEg9S%Rw z@SgrR>2KZC>lF4X_{$RNR$vUz29*K@j<2l9mX4US0#C(}oXSMLR7osf$$_1a*@N>!Q9HB06 z9{Cx0Z~XL0=We=P&bM0Ue)@8@7t{xF^gSAcY^YA7RXuGumHo$%vCK@{r^s{K0C@}WQM~g@4P*Zg$@@EE zYHP$>BW?ikq8P?Cu+e94MxG_z74~N8kyAH+KZ-7}fW}#ax(Qj{)}H;Fu!g$K zYLolHA3zq(ZwlCVoRR)Rxewkb_7;Rij%o9Q5$%1%BuXLu2+zPJ4p0dD+r)Xq=@UN1 z62;Vw9LIY<+Ct#59ShHIueLm6HOwc>e0-hw4xTzc(wqoltth9zsea_k{IFM*h`mba zJj7FVQnx+?{{B+0un7?L+rawuRM?wD-H?{|)vOgYUeCj3k@Sa z>w@tbT~$nHmSE%I4OOd z(OKsYkhaP@h;hz_tb+rY;A92o96_0hZiZ6WX9+LH3;-1&| z_7vx}!gNx;EDmpX-7E2)a-Is`>f*O%gMS*5xSEGIyY77R5k8>8H>z|N+X!t*f1Tiu zsbduH25*+v&o+ur^)P;y-tlSlWt-AH&Qodsz;(x);Tt`NKcVEsLg_!~@W)*DJhLT_ zCusPP>rOe}x#Lm3N}MtjPjvYG^goay{td=H=0G>*KoE1FcS6cvSG#bS=3q?U{=#xI zWMf>@mYd`H8qM=0*6q2^-(ZJYjEdWv4Xpt3&jO5buFVGT7l*J0N_$PxUH@f)EuzNx z89B~Nz>^iacrlSij`jMdg#DL1$1ob`GgXc=KlL=u8e(ni?Ke!lU-*G+NRnm;8{;41KZs^zCEBmelRD51NzQ5I_j^kE5Nb%c?oabT`$dKenFHnEJN5sl7f`6ME?-w? zg`+3M8rIO>MjZ~hFTF{bp8A;BpYmIUK32n{%)e36^7pC^A%&BQ`aji){n){v$aRJP z1mT+;JG&0qzAv*Je5d`C7j3qddKk)1t}vzlvJ&Mz-XZCFRQf}B>ifL!>yhpHaF4j} zt6xSNE$TvdR|&nk=b3LWeR~}b=TT2UoKtJwMu|x#^i_h~cf#6Ny0|t7zc<1zxt=yE zbCfTqVrh?4UnbAF8@{CY#k&+Ohgt5Vq-En|73J{y84Tn4&?jlxONy@9CAqepdZg(vEqr`pH5+ZC0|LpJ6@31i3y*z2;oTL!3WBoGt1s z(O_6F;_!FyeURNM#6HgUEF4$+H}$i6#l5v>MguVg6&Bz0Iz9DMRi}ii)B8j}`USs0 zUB_UL&lGxWb%L*IFqEv{%QK#+&)(KWAFcQXzF`|}8JUi{a9l^gOX=PEs5uGQ1p7d) z;){^a)Bh!~nYH((MaC z@;pzUb!=gIel}5KuRjI8hx@m*TYdV7d+&1AKk$X?cz#_UkiMTGgG9Rm_ImmpfE=Q8 zPTJBA81weJ3k}K#^!1XDxRmCfB_EMb9tV8cx+wL2kp{f%dh+clj78+XmDoO=lCS;@ z#}@IaV#G4`CdHW+({zb5BcVI>;W5mYUauwWWOz5+@8#XxQ#VkLfbr62t>xlg9&1Cr zCD*X0Eyo8|m%eJ7^nvx%DK|zR^HMei^HW~x;XbucU{Pf9EkV8^mG8%y?*P7WE>1s# zJ!Gl=`3TPwdG>)aw$Z=5OO|s&oTFiGjL6-SX+fJ*lOzF z;eYzu(s>3O61d9(!`X~HZ+no}t1c{%UnspCj@452{rj%(|H3g^6mc+01TFWuX!%Dm zzlB}Eq2sP}fA8emC^0ZR5=Y&pub*PJA@%%0q<>NI_PZnw{h?}(PnF+B?))53iVx~>RYV*sIlyj z^rLq0mJY?!k*DgeF`cp>=enoLzFM^{$9Wm+s@7|xKVXIW^i)**)-YV~^};7WQcu+- zL616Lo-h0d2ZY^7a8Sp7a4y3A%4Li2)PG1@gs1*po+%w%kk$?IJT)kFgAVRH>FCQ= zqdb|nF6|r+(r?0?Y^>&!YF)cQ^E`3N-xzf8n#Tf5D@Tb#*c_fyO+Q?CcQ8*VKXnUx zzJtqSYR(sla%<>Q<1>EfcL(?!caWYN;?qU9%9 zwDh`Y`9T&fZ@6fAC5x7%iZ%gF902v4oN!lFmAv3;$qu7?oZ5k@JC@~i+1o28vPOKRR#-Den(|^ zUbA;ms>P&jEd7Sirtbjd$wK^2Wqg%r^U&|UKH+-->3tPZ&S|8Xao}3ZySpkeuhqZk z(n(YE^mxO$G578g1SQqfu`+wK>RZ z7W0YuMg3lt^3#F8;qMUZ6cBuZPWg@RN{;*UgG)^>#;vd3_k}3OVNW2O7eif7Y8!)5 z6FjjuG9%^{eTKd|a9q{(JFc~UUK8k9DALALs(yLBD8pSxq^Vc+YjoGosmrdZxBs4X zRdounPU5@+^-^`(tLhXJx-ydf{AScER+*S5<`C!w-6ama5@YYceTO9Wrx+h|5U&C8 z>%0S{^`@3jnh`fQ<`ZRnMWxxnUx&uipmC9^UsH8r-ch~0jP;{fhO`ASeIwIa@{H`j zmmU0Srfo*rYgO8Il-pu#G?}*5)Jl=IBxW=+?H{Oe|I}Tsqi5>6d!dc@+>Su`x#h^y z(TT;JxdwC1chWyl(rOG;jv3*(f@d?rv)lcqiG2U-3Yb}sv+Ym&2ezZlug+jn9V&Pq z@@w~REEz}pGq2G=xU}6!GOwhQmrHl>aqR6&&ZxZ|eYw=ZVdlQeb~Z+o0vn~Cx2Ndu0wd*XKxJH8Kro9Bl!>j6iyM}u- z{+|hca8?!mcVSU}7~!))SAy%qQExeU;kjMtN95ft%cu)GIt!}ozhihBJ5z65snQgZ z&sTIER&*yih1{J^8+WH|Hp*A2wCL}H9V+ePiho(iyW*JQGgSI-yVHj~u`b771;+s1 z|4zmG8u{3msmr_9s`OEK6^{r52Sls{Zn)>YyF{Uzf z%y-jqnKj`twI*0t6F!|;6Al(%c}ME?Rdz)fJgQ*lA$H`-&wTm$Ki#1Xn8z~mV}FzhqGuo=c46- zELvW3(Q0jvBRDxe@R;S4!$Hv|3eC6x2Ut)UN?epm+zCJ zF2B8`&M3DOzdZYpu!r&}`R2f*)Qy%p(b0XZhl^jdvUGeOy-;CqXf^D*mb9O!=zX2W z($~)$t6Il}pJr*lD{ZEuJNWH%$W(eD+WY}y*~p22z0MZ(i++{goBdWvQ>aoKsZ8=5 z+SB5!UzLBD*?kD-d$-?OC;ZY>TPu1H@2oeOr|jw+y^g!2U(=+1fp&S+ zdyzf{i`DnfU%@WV`7Us>sc%bLc@_4D@?MtZnIXnkJT`q;6kR|#-$zl0et)tgO|vfa zZbH4frT6F-^FcUe(x~aP>v5584 z@*X(Adn`Hr4lKlYId=h%y4#xZ4&7GXol8FsC)m#7jJKKkx~56&D1mc9yFP`Di!wz1 zC~ub2R^Z{xF~1!Y7)&ZIzWY*vcv8fdcWpUBFB4@*J)PM7E*WJ0=`@b7Hs6s)T(+U# zfGo1IH7$qif2-4Y;q_6Yqji#VU1G-jI|973*gwE;X}wj?{(ion514wQM%*QqIp>l* z^BV|QD`I%M1J*iQw>-%jYej!R+(qW8yT~#}|A%_n#2*OBvt`VmY9IBdPL23eiD7@LW5}O+<-9-j+Mqvm?%i}Sk?)t44ra?V zo6e|K>e#K*f0H`P2ta;WFb+A%Squ5SU5=qm!d5erheex4;#dhAM$NOA?bocom9Ull zBIno%Ime1R^;NGUk8j9(6`_NZb3*9Z#NJ089Qc2JbLC z@g3!^pzY9jm7OhB@*Y$4AVA~bwL>C?=1H7JYu`Z_V@_fgY6(OsrIjBTMSeQ zJ4v2X&ShGsO-}l3i6Ig{cpoA=MqI9RltD>b~P9A5&Mb zc9+mI^b3C%THPEof;_$#%iyF3$E)p4$m0_77(pI?=gz~e_kTrwV0lNq;R={<^gj~L z_$Pnj$Fw(-STaxi2>(YErp3#|0aUs-9lVbn(Nnzxm3A5C)~BOJe5lJv^L4YN{YTD^ zUH56BPSM9t{+_hGdh#RE_UegyPo?MFlOMcLZ3hR+%{=6}j(MVOUSRonzlHB8ZyR;$ z>OX=3=yQ3VxV2U1o)=HWbbASP(_18V+iZJ* zmW%oK8hO+S>aEsLmnr%%`nND9bfTiacHtdtBz=9ly*_P|hi^T2@2s?M=@J-=5+6Zg zzdiA~8*2|d&ne{hFU{iKF#2=V7JF<*zo?RJ6cu;%sy#j`^+==C-z{sAIC{+El*G{! zW4y9X(pJuLC-9woVy}L&vQNKw^+YB5yV72dG$~?=gQs4v_AsUU8GWfk^iA|dX&V>) z9>)jov@b{+sss(1|6jzORF%{jXRs<6q|dfQRWc7xD5EzVeO_V-MvuvR>gaRKPt~W0 zdG+Y2!I*dI%{uSYzoY)+a*RZuYLs*wl$dz?e%z71XO2eCs=Hn_S7xetB6tttqfNKn z*!OIwZey+3_l%SY_8rcgzYCiWV%%&2ALkdg&o%J~eYIeXD~6o1vo#Qpw9%HQCcX#z zWCVS=ZKNi?d9)_J9pCrj|Jvc2xCMCz^4I<+u|8YM?o8Tb2jW}MH)ggjbH+|LQ$F^` z2+L>Lqy>5JY(x1ciKB$_K^OJGx1sFKD0@4~+>8Hf5zk7<^1tdTU!27Zi}Hp47eiv) z#~)8)I%H_5ZOzJ0lWp)(9QjB-p8Z9GI>0Q^o|qn92?`jh%mW6{sL{NU9$Xa!HB@t#_28N?-d zaKR8=GB&O*VNS4S)Z5ImEPrLm#d=(m$W& z^T(&ovpmLCa#s=i!}UH>y?fMqF5fdUTKa!o{qIpaGpY{z|0SmCfHiRDX~ARc`4F$VTOB5l_9E$>kJwg`K$ zuZHW&u|Lh9C7K4cL_fykAI6er{jD;=lHa8_kRd&UVLFX&WzRUl1r;J&%+lg z?9EO3u_MIIY}F(55wZzuLGifJ(L3xngXHrB-mVt-PM49!Xc3s@VJ-C5DS=@WdQ;K- z*%mbiN2*LcNgO4CrxAFaX&ssN{48tpP?cpxnvyd(pT*s;=3j{U{zV5HveB@XWN?@Q zuej3>f*)u$EczVtbA0lh@fpVVe!~hSjkXb`=aY9@*tHs;be%a>2>oNveu1srS!Gc- z`znSZZQfkW`Q5%nKa2cn!t)a6`dZWff4Q|)t0xx8!3DGTFci9UZq!H z;Y*!Wo)3)@cT~!}Ieed_uPb>rptq^H#xn?hO2SXjB~bB==hH0`2f#>s1K{KW{b1&o_Ma(?=y9E4pi*I zdveZ|HY*vcTAU+kq0eUFkoi^k9l}1P-0|`DL^s#OK7lPL#@kx`E0Si z6pZt{i|sFUb7$~9gGCl7RkT%L-8Niy^+un-tbt6Vo8nBY6Z=VTO?+^uCO$GE&cvR0 z#?`Jd=~wQFPdZ^Ji~a{OUPF1V^`1K8|G~U7c!2(2D;m7n?GtGXmt7y9`d1NOoVVF& zJM|wbOmp@)^pmS|32!lfc)8+ z8Y^vw-ovvfA-^ijuK3g)a@-dD3_M3*MB04cJVaUeownw0Ovl?R_z}y5oD#tL=EwWl zUfS(RyuHQDL+R#Aygm9WB;Fp!Cunft?I~OOf|L9umMG8pik$mTt)Nxent9Jk`ihyi z#M@h*aN+Icsra_rR^QdW4N8~NOFc^Fp=_8$e}HdKIzEMkt$X@>ao-n7bHA7mf)D?i z?C*j{-Z3B2xTpTVRB`Ulj&qiAG!f@ZuC%Cli3u#>O3P~2EtFqyU82%jNBhA^ z(A`!;TwUy87;nSk{7K*;-!QCOw{U&z#_zbqLoQZlj?>OjyTn<#!p&3X>DlWj)>xB% zK8R^^xpmZ;E5u(>Z5?#kAiDcN%>ThmAM7TdG$h)N?PC0r^$u$@Q`vnm0{V^y#2hJW z@FjJwr&vSFxSozwh0El8TlSv~8CvGZGH3qc@@x9cf6b!h^Q2{hva<0p!ie|!gK zgJ<6zF>&9(xa@NyuHydWa$^VK=l&n?@*X;^C)afZ%9}EHd9`Y+8TVcuFR!*YgO_L2 zUjZ-g6rM}+ZeCw6AMai~^{)3$d52HzJfDuI1W%>J&U51MeqY?%Z^Bcj!p`A$34Twp zPA8`0>OItIJlE~qT_p{)q2RlWTU_%d=-}#|5j>l5S7ttlH9JRP>lF}N5C6}>|3#A} z7VVTOxJGp-oIPS=qy*NU@yG5woNoxf-5m}dW`@AamVPq*$n(pSe&H+k&v_@qccEvf z`Hl*i!PbIjthH0B4j*vmRV3voh23YopWmio#ZSZU8`z0@%yr@See0e0ecr!uVU`Ew zU6`~NLH<{{%Lad2EAYN5tvvc$ny9owXqzV$2A$v=JIFVFHc|E@2zh9==|8v{yrCJ+ zovgOC3$)q!T%zm+eEaSPZ2z}Dm|WOY9iH`_CAQI0trZ<#YI=|Ak>bPGCVhvh6Zuas zP8zWaZN`&}EpMGS5qxN|?K>;6`?f2bz*5i$Ip`bTR5*cK6|SJxC-LsS%=h!URYE)X zLBxj~qxU0Czr^(0C^7b&`sxGj`VL{89g_KcT3`sG&)OkBLY7`a|3?fP(XBNjGR|!R zKM-+7E3Gwn|AfE`)U8$H^83g5egWSvR9dU>{t>=+iFLu7a`{SFGrbS=SKTzJ_;0!5 zugHr39e4Z`##Ty}U&A;Y&y(`Kg70T_Yuj1*zEIGEcb>KKe7IZT1gd-wyYoeVZ;3P} za$WYW+q)|nCeG&69rWJc2)p!3YdfA=JUbl>!d|5Bt#d_2Z{dDCT4HVnpF2aX)0q3-bCk94eTKk_0Kdw6 z7s|jxI(Lzg{%ck3G?EQiI75<^Ku~HoD!3xnL z&EBL3v~!Q8zuh^Iy_x47%(Kf_^#WvdF<}O<$KT(mfarm_d}cish+uF05OR_E5)8*^m3_FTW18kgpzn*wxOtlY#gI+8OQtjX##> zEPJnWY^X!=sTQ^~Z69yM+TG}X^JkEc#*Ws6gTx?#{9kww1M0cewm({)$UC^$gd86U z9)KKw_-3r@UM=Uv<(99pQp-Q;PZYL3A1TO7+wSh2<0|I~;YUKtdrHXyhV1vfGbs~f z+FzeBFHM?q60H>0K_$cAMER|2HrBdE!EfBacU_!oM#^+~&Qyv#-!IGj`nON3v%*ud z9ar?xc1z1!201`S8~S=P<<3j{W7a(VYy)*RTfj4Cq*rI>$G*iaSZJpQ4UF z-pvxbj_+<%}}=PU;nuaFA3|x zjDMqDBYuC8Q2lZ$)1S1boX0XGj_TgRLm8X2eA!Mj{z>Kg!xL&9X_oo^!%!95YR2C) z-}A0I(^i;gjYBo@OFVBrfw{{2_Kbh*uaCO=qr6$1TYO#YA0qc0bnSN|Vi@b>%7 z?dnWzHpWRU+L&W>i^A9l%6;LH*Az}bUIr&X*qfuj9})eXsy4SD3TX3ss?A#bPrj;r zqT1Zni@X}jwSqGhls6&^=u3XcZ*GGOIIr2z=AB0zmCqZzV;KYuHsUqv5y}?11IQ2S z%9df!*=mI6&^L$UQ-OHW!}tz*x5xZp>_LzG6nTWk@qWr54x#+oG~Tz@+=;biJKAvD zZqS1Nw?r$#9<*POH1(E?`-K^7o6d5Z``EU+V*-cLk2-Hd+iu6+P|NT5-Fa5#w*~ob zuhYUgh_myM4|Qye%pkT_tUQv>c#bT}a@9E>@%w^KU-bH{o!vfb`&pj_dbHd+6KeqS z08P21sk_|LJMq1<+#>GYwtC1e2+vdLy?qGlLma118_F&EbM=<0yN|Bx%`aaLYY*cz zSK+tMpdYYFtkbl4C$_}sY{{R}e>5@NCOAgqnOH#S+m{M{)$>RV+dhH5$2u&q1IFKP zZcg999Jg|LPS`H(_G?^s@VYDBG@tH@pNyc-w>fw}pz(_?U6MTNs32^U(oflS+CQ+_ z(Mv&H=&y`8>wm1UK1z2@{raQA_mR{yxxJmd74vVjv4Csq8L!K4?!?&J4nBTMV|lpf zXeH#CV~O0=D39xB41CD0sj2;9ox}fXP5m(af5fCMyPt9j+T_JU^6oIm_v(nYlI0=o z7N&K|T@|1D1?m>OccsEhL0KOVJ{LpN&V2Tc`gzZ&&27z3dLz%+ z3ni`;_u$MPq}I$`n3G%1qCOn~^PF?W(@~B22VMa4C12es?nWDILcO>2ATH+641CWC z3L9vx6#2gGav7^*o2ijiMRY!s`e*!%7+uwEF#S7Wk9hca*sE45U*~O->5$_i&5{0%eQCR2Y z8HK4!`mmRYvwx9Kj=a-~z)5$j-xU-{42b zv@YnwpQXN*(mx<>M|w|cLz|ooSV72}p7AQ`c@v||F7PA&lSVRl!M|$aLXA~BS)II+ zKY<5M`5Q|e+5NoUF%kCc`FT`N1}CX^jy~Z1`LLd39sWt$@QF1ohhd1@!?^hU4RN)H zT>GW+PZt=~sY|qXMyLMLI{r@#l99@!o`P(cs-*9dq&}`sT^hsu!vET6<%{(^M>JQI3vGmx~$?EW|Z!WXESVQMNza;5v^lC-6@a3^*3-eVzo!t6C zkWKe|-i;}lMd$se{cojQbl%~j??a?T@YX7PI_B)2+oY}dp3l3+cUdZ=34`Kam@P#Gc;@s$&cjxO`U+zEUf3Cy96Tw<`gM-l_&gB9(-O&}eiM~{FCTTYkSbk*J z)bBrxc~cZqHWU2LZ^UOp`g2j=G@Vz0f6#TSsb$9No9mqMIuiKGk`q`PhjPQSBKu4o z`L(eA<=Je&2m4J-Hb>_iB8zA5r-w3Z2-_@;0Xc&Tly z_XWscOxLJeI@6?B#(tCMSAXrEgVIl@mZ$W{?_}DuXtOrW@=WAHE_p)ePZ>wieoh+x zf2cBCaCmicVf_rtSLaRS9awF9qh8BHJ+O=oxHwl7d?@jwP|ojBKMY~HRodDq`UY}z zxe(4itBy1$8NP<$jry^vNOPiaRYbd)d7LK(a8q&$?>F*&67SzxZk3`f$QLhXnrk#| zt!-2=T?p}(GTt!LJ#R7HHGCfl#3wN4`Cip7eL{|%McDTio2B2r+6r~dj?6)xJinaB zJP~ic;H8;QqsV6t--(5RcH?_7-+Kf$grKj$p^vz}0|^u{=b9-Yz?Dum79;LKTG+w~|2fBXCbo{?d-+Fr;_{21=Jp23><&{$1;WTGaX8n208n(!wz{6BWVpVTkZ#KHSKOdG%%s!jD2 z(mQn&rcDz1F`1qY#{&cx6dK3SIWjOoyuYbU>9>QBB?!Kce)VbLk&b_2W(K$4=(qdH6Yu$9lJX%XPs;`#)vT z{xioem2wn#0S7Wwxbf?Y>PVLfP){dr_GaU6O7L>$e=o8 zgKaI2-T=nz2yq~dWz-K(4GaI;%R7ceJs(~jRW>^uXIO8NY2IAkx9R6y<6GR(V(tto z{zmbF+fInNXeZR&*4J8%=Z0LEhjUfi%;DH*4w=`TS97aUt;Z+P#;2rQK3ASu?je3* znWAeM$2rES2eNXIXJ+8*e$BWJ4Yc9?&Ij#-+d71+h)a_)CepO@N# z%gp`v*k|S|@2$`F{B4vrpa1K9X0QBz?6VjC|L8NPuh>o#V*P!n>RtNm5wuO=|3aVb z9iwkz*=G|Ivd@MT|9Btw2KE``p0xc}S77U^p1@Z+Mr9vu;#s6a#}LwHWM0AB=-?$r zoUjq>;p8=jt1WjQ2|Ea9k6Vs%+l+ze31tf**E8E$&jwG*_4_upo(-a1d)cPWK1O?I z?q3P|WAg0o7Hw#3Wg8BnZoNIm*7^&=4t~!Kpgqr_ofzwxHWd0XY}YrYwPACj?EiZk zzIpBnZCEVq{{Pq8@XhtVqYXXpu?-)(avMH02-@@i7urzBN%a}*#rudch5#_H`A%dIMO*Zj}iw<-0LOg zUXI`Cn2wjcqfTHYztv3)Ygd17?g?xKzvFoTr<>q%hs*m2m@5HkBo!E4KC&V?5 zdKhYr+tF$qyS*i|#u;3fY5yvG&Vz3|jP;1WluZu#BY6i`C%rMRO<(J8Fg|f25T97M zIq2u1<7>@@O?gRQV?ZluqcMt*T=Oyfk+{W_{ao&Agoh^AD{AY$Ki~z=M zQE_i^;-VdTRb1j@%^wqM=|fAIuOmkbJYBioZpXef*kh1S^$?q*$i=5_|6P3QyV) z6E=bMh4Rzb^z|i@wZ80VGm;}sS?desk#9lvkn79t5w-*0X|LXrZ;8FH*&oKBZK{JYPrYr(U3DxQ7bq;YYZb3g3dagQMkd3=)h0a2H} zBl@|Ic3&6peT=%do?Rc$Do3nsV>R|IYF(>6p=Vr&p1@Fw0!Uk)Xz%m~QSUTS$P2r%FImLK4 z&g(+gKZoi0|Dc`>317M)Eks`($r{TkV=>m^TZWa7A(x-3e75nfsb74k3*S}0=1V`| z5B`@+cOdV2byk6TY(PDJkG!E%5B3p#U}2vvp`Sv>KA-wTO1}U^OIv-^iN4)D{6>Gf zoi!O9<(o9^PSOz#l)sAdM;#wol<_k-7F<7e2@C{;>F9@_s<9GO`7dMsW6EE=>Nnwg z2y&WV`5vl0Vcgl;obf#bKGY0!>i>DmkT>m9qJ&|{?-kJw_(uMM=kF3Lo_9V17ymhR zmNGF}BhFw_T{WhD7WJdeu1hXt89I2#)^1|pNx6+>=qTfuIJd<&o*A6?nVQ6%PnWS* zoSE@XtA_sU<0JhjgFdJFrk6p#3jP6obW>7K_kEG5w`Z5|Q8JEiC?iQeN$S_jvoDnK z6>$fRZ`Aq68Z{rU(TKGZi)-PHZ6My1_@x8}uYffk^B7R=vF>F zh5h?w=>CD5?(>rFYn(8?^FFK5Com*R2c;d_9MVqPL(nxZb&ch1ENCQ+anxUfDS#x_8n`Ua!$UfprXPWy#UBzCY%%92+yc zj2)XeXHl2W#IXPJ?v1*^42P_9DOGI-F?Q-lt26#EFy?ONI?);;-)y>V5lTC$ua?2- zPTOm`&g<_b{&#Eo%;>?JQEshcN81~SAL%k)+T0zW{pYSlEQjkBXwD%P$Ee>FYf+u+ zEV)NuttW{0na_S_TCt`XFKs~{A$J~ZlN8$G*}u`!dARuspX+HR!@e~jA zWu8s7XLKPh8<%4s23bYs{h;>{+U-5$eLM1=`dxV|djI5i(W~Np@^{6PECun$SM z)6V$zODC`QP}cSDR#q0)uobdN1iYK%@vl@a;YW zUT8oD3%pNn~%M+P<<6Vzlxm|ZXbftEU%DYU+ zCtulnh<9yb?Cy%xXK-|W=hy`ut6X$!eiu6Kd~bBfagX?)dp9~%8*A^ajdxvq@BOyx zKi*587+bIY5Au8?t6f&O+T|a!+Qo8xd+EK6-(4M9`3GHjd?zdakn7uXSDsgIf9J~c z>TNsgTbV1*{qK?HC*Nb=MgIrwyz@Qg`N01m&pWT&whwe%X-uPy?z~dFdyHqd?)X_{ZSM$FoO6}ckyX~-G5;^ivdW?ynU_`8<4C(#mX(RGe5>F; zZz%I*zrUA<`CRFLeY1RgWB3i?S><}N-`~R{^11B)&%E`bCT!7#uPK3@xV>2)*rRY0 z7hwEdlzJ1w=B!NJ-OS@1ZbJAuGjqE1WoD1gJJ<(4;G7Xl88k`#gLZ0#}aMDdU;4iCOD|T*Ec& zc7YSG-_%kkbj^19+*o-6gHy))sEXGr<9+R-J08A&h;(<-Pn_qzVg4`mQ1AOU)ZaQ4 z2nU<|_SKQ5CJ5P@|3u)$EjIE_R=a)uKJY%?WfKdTG9SkCt%Lea_64C!CeG3<&|{41 zH?=p1%tbAMm$%`2$4O#@_>;QQtC=DFb9{~Z`?J+v5a<yLWP9SxWQ>qL};J^&4`An$+ZmF4eY_)(PK_i?Qt za!izO)TlD?{T$*aRN4hGJ?TUF|0H~!3#@y=tBJ8!ymsnsjJbI+?-$-UCGq8hr~URO zjJ-K8VC)SWk@*k)Ff9B5v|#KFi7|A)@WtZv_X&)jVHy5yVoIRwb82jDl=gi0zwC~m z8H@KHQ}JI@@s<7G{oi)S@1ZVgW75O%Rww)8^+N(X@M|BZjs*H9*yl5sjQcFidyBR% zGmfH+{%T=Y#kT82+_ft2dUxIfNXL2IrCTQ2t&B3<1l}i?MIgW4zmIVztEcf3^=&R+ z;WulZzd94R^HNJj??%}b-~V7#=^e3e&_>>2*BrSZ&MWRKB7Q-u*DRt=)zzq9%DCwW z=D62A$GZcx5ft`qbGwY2x{>a-dU5V>AJ4Jop7Mu-7jBL7oO>DhfW)%+RAM^KHsXHA z?Z@Pl^j}XpKP%5e?*CK%#-f_AZ{e7A?w9cG51jiY=YO^X*W;y{wp#6He|5rWyc7H9 zM5H-9t5MzK(~dT=OyHGyy7V2rphM`YJ9bn<`i`csX9xY^lyvGl-atRSKz%KRRZH7p zPph$ZOz67{{8+Jme1hxVpuU6H&stL7G0`dXr*}LPQ}|H=yPBAi>g)pi(l)l?X=w{l z-j8o8O%!wuI`~S_O!%V+A4>ah&V=tl_=tnA%y7Jqb&GHJHB*;_80S4T@f6Al_D`c> z>Z_!IVWfkY2fZ`EzZ?^1n0~c}6`t3V#JZXxaI>djC+?)Lr`e!^d|}$oO_fdgc@ERE zjj)!y+NmeCtn|N7>1hvFlF?zPQenMtY!?qK<9OKFllCbS zpzhj^TkArLJnH{{#F$y8>`z1L?q}w}a!WfEuy_WWr{aA|_`YpiCMl zE1LvY{3Sw%>hgJgPVVVDDj2S8;`FA#tG`bBi@gn`9!oA0c1qM8!MB0s8f^r;YzL$* zVcJ%)=ItmX{U?k_u*I+fk>^dW1Nwx1(~^uLPn_DvWPqVv>)uEAFO>M$hzNF1>dxrBPb0YgJo-G&f8}j_9@N1^_S;|}p$KJT( zS1$g**}B;RPr&{EyyyRS3}S_XYzS<9)|Bz8FDs2v~VetlZu^ialV^Hb-22QhEJ>sxuvdeYNbE&S+ErhtsN<2olz zQGDtG1=Ip-vp&yB)|mD06yt!rh-s~F>UwQA3tcJPp0 zf&0o-IY;V*PI($jf_a^se*P%d3!VqfQ}=*6`6K6^7vGv?{8t5bj+(Py#eCi7U^5Nr ztCe5t`&M`9tIg9&ZlI4U;{0E5?J=YJ@+HlI?`yOnkiNgZ_Ld`$APvV`aZIcowK3sW zSJL$RE)0nZZ+vPTzqtw9l+$PT0ZyBcW(})=| zzX#uYa}#qSkD0>Wlye?(o~P$FOY0NiRuFN2%P_^W2k5gLb*x0&^8QZ`#i!_lZhk_} zw?9hD-|?xR$olOdp2_?UB)m5VjUU=!-jfWQ@QeD*bJvgix_ca6>b$dzVSS95tL-?<7rNfxM8gk{OC?0W#sILx6AGP=XUA^G-?|qOmT0`LF z-=sdSbw7C0?^bt|k8&09#nl+T;l!D>I;}l zAQvnd@mYG8j~K}JR#A?eTpB4tzE3gVp4(nbxp5Y=+aB@mX1Ls^@1?DBQH%V)l6+LN zp#_iX$;FXlgX}x{;Vp9J7-(Aqn#$d>HNwK|3-%%M_*}hMPwyq>Md4}m-{{A|4?UlB z_un5P%`FS1Tvr(LC5at@v3B1k_8-sWgpW7Xe{+RjQFC6s&)n;r&BeU-7WUzbi%svS zKaum`4-+|AeRzjk9ul~MGJK7c%~r3IeRA)Asy&fym?6lM7$UL2i}lDCbHEIpl)S7TzjK|rm2P*x9fVvwbG*`K zpHY^_djDem2|OcyTkuU>&*-0Hv?@~4Vwie$d}?yku(T{$a<2=U{3~t7TbiTm)uo@= zfI6>nomuA;LO$H>Ex+?@wZy3=j#naWXUlV_mo7=(?w)gXnR_Cm`&M(BpUqzV+e;4l zFkW&aGr&*i*GpZ*F?SrL+nyTG&*Y`V-gx)8ILp${SYmw+#79~bzfQcS7Jb(k+ahV0 zc}gGU4vY!kq<&^oN{0YT`ru zc0z|7norp?sbo)~BUhNzO-J@DQ?j;_9e4b(crZ8H~kuvoWTCxYFJ+6KYO<1 zQ-jEV5Ar{(@-JlmZT@f}=IpYGW#Pgoc<__{F!uJlsnc45?~Z*8*UP3p%x78` zPZ@Q|0$U*qY|8kvs{IYmDwHpRYKd)Cdx3adDy&TQQ|*M<3*|h#O89J+7*Zi+$Afuw zPi>cRCfZp|-umwKjMFJ_z3%x-gx5)bZg+pQGp$d`^6&nzjB|IG;rRU^)8Tgw^PG+w zR@)PkwuOjSEBxZ&x104IHQGwV|3=bOdM2feBhOgxxw_Lh^ElqSqR0<2Ko9fgn$;oo zpdC4G>uLYMx+W#ZrR(Mwbmw8-G`am}sc=8STO7NpX?T{N+LzdlBl?;88cn;iCA26y zRAFy8xuVQVOzr$#5b>fp#kv~ZUJr6#%@L)0=FZu(WYPV zdVEK`W>-8z@hk7Z+^Wmm(`~KyE!uQQ@&UPh-jS%lv8k|x&h81c56>{U77nNJjZCda zoQ)?#QfDsh_eWFf{Z{Idw;6AST>8CwERac$b?Eu1!XM+^ZNEQ*Pe5IBuGxLXNv=aF z*{<8$(XOp*SL}y=`gChXyW#)BasAAZLs+wWv93d=;Tp4m_y^z*^f9#Gd9*Rwc@uR| zyY+8hqF!OI-nQo1b3%XA#|Qf#|4&dqwma~ZOM`k+ z>kVvOqx{BsiTT*CQg8yDd08^lnwj^15oxvykKJg6F#oqS$@xE9>O$K7 z?6J$Z*OQ;n&z!>3j&c5~xWCGrzoz3JUt@8Kw@j>xb)hwhTr=uo{gT7`xklmd9H82biVyx;@$>4s_Qx% zJu`ED1~I@Ogcv}?2WgOq4cM^>c8qLK6A}XkBQV(DpXBh5ZEWG#PFx$8F>xCwaa%=J z6a_oZu@Ew$G9g5vij1wP;-pUN-cIMvRa7-sJ&{#KQDsF{Reh=~(6`>T_nA3T0Qb9J z@4b4Sc{H=n-uvv|wbxpEt#=8mgeU(^*wa4wEl+&%MN=>t9-%$H$JK!iYs)GG?uGYE z`f`Vm(VvVbwVTh&_{`JlB}S02Vf!-TXwMaxWl#R0xL*rP0 z_dZ=i^1)7`H3upKT{iq!dR0f*;y`DhIx4NT1KmaTL26s2OGBvL*PfzvI-ov{J=RNW z^dhZS-ebTV=_grhSo)le3R-o4zg(}qyx+>ldo*CAmP>nJ;im-b!t}hBi?klTE^!oR z()X_dL$T6ts=#w;^_xM7xxEN6OFB4~o`}VU@09-;lqLRlR$C!rmRYJNrqiMXjl&?l z!|P|2VC*@_vu3HZ(R^fp`9t=>+j9+#5%q7>_3wf1o93+?zD(87(QCWx{#9%j%;QG% z=Xx5ibu?bXa=aG7E*5_DG*;kQ7j@J5gji*;hfNzR%ywhNL83_(+s0CxUEA1diOo%8 zGi{X8Q^w8jP#?=BZU?QCC*Wrsz_VV%49mEWi$>5-kH5Mb6ZJIpX+YAa<%;iMZ@%d# zxvjiGJASx}%FL&}x_*qE>X?0Exf!ku6xwf;+F`5{C*Z&jjrs15fTPk{I?y53M*;eN zQuNm(84)zByN>!zW7M58Y>WDyrghPqH0=9n?E2vsG)80CXV`lXM*%z!@!q4Yw9nJ( z@6xR_9wbAkG$!{CfL3dWyD+e3NQI3z+wp3{l!o|3Bf1@yu~PFe7j5*ev|%4;E6l{F z3uBM>>ZVIWu0 zHk}D)eVBob*iG-~E~K?V^&!5NLuH+8Y#1N4-{-a;u{`N)hzQ&LZ2QMVJRG$D`75;l z*(K>-mm!;od+F6y|uXEW?Nca@%L&!^O z8-Bm=CFm8rNSOK*rZ(l_zOJ6y)FaxGu?Ho2=+|h6x4+^p^-Jqq8>BIv{a+%(h82;% z4R7JOZ{F4}ux8OJt4b%t>d*A9OhL9gBStNorbwBExq zMs(z4p|Y@-))w@lJ#rkf@pIW81MmN-_x(ejy5QU6+QJDRA0eN5?^90m+&*#Evu3AP zYQW}t;tkK5VLjlG<^;zyht_&b$;M?97(?K*+Vu=S{4iv|(^{9(oaKi%<35+xtQkM? zS_SU%hz>2w`c?h9A_(5vvrpS-@2507+DCml=XU}Xek;&8b7K5x&TZqwFGWu4aUZpH zsXP}V=fpg(LOVKi;K)15D9z<)v7^$stMVS1X-`JCRP2BT1xY?f%s2H_;`7~S!^D>k z7db)VQG)|TPKf3v)K}z$dufh(i=4b3YF|&06G_v57t^6G;1p1s^Ui6A<@nf;i1qCR z(RQ@EPL2DhUj=PZTcL8%bktVyALXfSe~Y=QP;FYHkG)Uzm>Ifwoatf}pG`C#qXF6v zf6aV^Deu`}lM!(YQ*nq+A&#<)ccXTC{1Ut2b6;n3U%QL5<1lQPp;{_~@hAEg8c;3J zwQwKt*?q-UUav}@Vk3L#?~AW_b-<%EMs3uu8p8~v{Z6EE`fcNgFT(UE6GMl}(kHD0Gwun$hlU$X zG^SY^{#X_AAgxpG8_ziyl=Ne^lQ~Bo|E(Jbh34QPrV|EqtjmHNcifR zh?%1%OW+s7YwJGYnw5K1t6Zx`d)#HtxeSeLhnUB|d`dorO zL#~v3Md2x0A9Bo2c;XK)Vt+d9qt`9ia78LLuIm*K4Vgn}Xydm%X)`H}&b`MgC!LQP zFy|iMI_Z4W5G&&GO_w?!J+`9{H5rRvaBWA2^syxF>!q!SR*6`vy5))6@&tU?H8&O# z)oTLdnAW`ljJPPx4f3A}N0mYN_s_P+Y5!_#~HI)mpUa6M<1Fd8SEeyzJI>^_ zmV)2OO%`Kv(OLdKkoOY)!plAHc(74F-s`@j6J-UBib`MJcJTLI#>SQ!*VcngM$s~9zeQ)}W0l?N)9HG#{`Fq_mg-zxlPpKd2P_*Y5Z zqlZG3(%uwtJ$ViAK0TznG3hwArAYfO{a2(tN{+-7SJ5XLn}s7$%wf4BZI5K!siz$p z(}Kx1x8=X1^ltgi8FCE&1a&t`TNh8=A;w^g!nURS7s3|li`(2j(V9r2A7Sb9N%i*9 z`;^J=`{EX11N?M9)sgh_Xp}a{e%tlj_Fs6;9{43Hjo^)iKRsh64&G^Ve5pc-3w%bj zC+4LcfC;D1d!A3#@27EeCVnRD70Y{o!E!l$C+(p^<{fF>o-Jg%B#yOm4emhet?8$< z-8HTcb%bQuzg%JYhxNpq=YAfaBgXgf$0wgn&}EmiZ@>3F9D}UHQnR|=$NtA9$~`o- zTw+q0@?BG(Q&UT^^r+t|eXgTV9(||_zOD3WqUU)ckNA%JWMknc=z{?*F+pjwA{C;A`AZJGF2 zVgH+rX@hZYjG8_g=QXrerhCSE$4^$+uvw?EPViW_~buN=QqVq>g^gS_dg}&{sRs4o#g$Kr!qc?k9B!)s3+;A5oY&(64c?B78OuwR>z5C($2? zDVhU*3b6qMj;R%(?}$Y`gTBL7ca~W5%?k{3Vk0Sng6+;C0H*a*ZTt= z`v~={;nhtZx_c_0Da+h`CI3zlw}^eDX2CzkU5A4HK;AkOtCaYY{7&8WzVlOpz8zXI zMR&t@z`c3~19?AWJ)$vd+fpS{7&(?Xkm@VY@*4nx|KHod0Vjp zqnZ?mDqhatzY z&H`p|@T6+Gex<%4`rf0OdC$G$oyT(cOXp?AR5LweTHehvpwL-A$MN2vvo=guXB}!1 zeSQXat?(~`Y}wBk@;2sC?f2+rMi>u~<)Pq6v4!uz@nAeRp&x!MB77c&PNNZH?x*oh zWc3<_;*Kx^y4{8teb7&cc!{$hr-4?xYlQMXDRiQcLCSyVk^31}CJD@QAtx?(bsFuS zH6>-6+*;OYJQDNpf79umYRY(KDbbMo**6W1N@KzZm`D?>-dJ5?Gx zaj!dB$3gE+i*`Qm;k|>E9xVMNpC^yZMLwic-p9TBc}Vx}XSojQ#X6|h?d&?B@7;6; zJ@-!ByAB?7W8LyPP#y0&*oAzUW8mqW#66VpD7UlEC?6e=@w5AIM_AG_D(sWXw|VGU zuF$=d-|m@%nNp_$UkRV|?G9GaoFfnJCTTB!yC!>f1*iI0Hw)dbKY{xS+*L@-F8GUx zyZ-W(o;J*tZ7BAf72yV(0}@AoW=-s5YPv4kisDDNtQUOG*6aa>9G*O0sv?$XT&=+E^crewrD12I;> zTfki4-UW7M@j6=vwwWhQM_M;@Q}mx`Xt0;&m3g2#+W`L90Af?t*@%NXV^}vc`iy=` z2c03FGq2ARUwEK68$*Qev~<&)8hGB-mjC@_%G~%jVtE+PI@R`dM;!(KyH+}C`$|WzSDj$IE*{ZaCjK4u zoQ)Svl5>k_Uba|j z+YOeUyunhB1*~ADpJ?cD#aG-iF@kaxMX{W3-E3Y}nPVGA{R*$2Z{B1DfOr1V)pp>R zsZ9IIHI}d1j7>v)u3v`~$_bTqK@|BT-o^C7n4%QxFPVl^BsiUn%| ziqF-_xfr_L91EK7qW3mv_8{;j`wg~FnA@W*dne|5xI*|NJc2!!e_GPJcwNhc;8`C% zBICHvZsi!34?{;Y#}iLDANZn4%^`mIU?FTjWQ@ESh;^CPmPb>5o7PKw+A7d##+7P= zonbDX*9v}YMti>LKPSGgt!3SJOE>$w`3|l_UWps^2grlGlJ3tJyye3j>pi8dUPj-6 z#lkeATG}izt)ljeJH+xwaVCH7YBT)u4NjQjThLzUSjF$h8ec{G!$dr*Jo zxzg+5UV*P6*QtEEgXLfK%~CppUlBH^ z4-W`?tb;dtJyRp*K8StI zXROfUPLul1S)zXrLk28p^u)i6pI}*DADP#3jQAL{FW>SL-%*3#Bdc8Ajq&PO=A1|4 zN#h-=_B&gT`FTu3ZGmTE@ZrPwUn1W!PrfyjuO{mQ{pcU#J8Uf%DoRk=Tkft5?6PVC zMZ>PmWt;y)_)bg{cq0=pc*;K|=e!K`6ZZO&e(rA2j-RQ^;`1_gt}AQPTs;gs*;m76 zz9&v8?bnBIc765y*}T@NusNge_hRxsJX^}GK7sKFec(fX1AT#vF{b9qxUrNDyOwE) zA&TEL9~HuG_@Q+)7k@lFrS4pD_vD-v*zVuNob~5}7qg*1&`;}@zgK;;Y+wn~z-g5C z9eM`5jxRBmC_SsEJV@_}a=YH2tn=m(+DM9r2585YSV_XxfyJsxi+u4hnB9Mv!&p)vHOGgy~;eq zgZ~RUQ~&Z7+o%>B{Tj{nu-*z}jLar|^<&iK|frr-7_a$Z_y22j4DkmlWAxV`n0 zM9=2}$In!&{id%CzpuBHR=m&N4XlCy>=k-G>E6*k^mvt|kXS9;>3Q`r_eN1mA)7uwZjOB=`C&4zWp zLEBnrQBjld;EoTzSH^m@D5rd zuxBgpT4gEDD$9Rl;-?pgrn&Or43b0hhK*2>`uT_-W=zpj|dmq^AnV78ZyXn2F;g>^sa5h2bSw2SZAEfuYc_H(8Vt>3N=|TmK z!IK_;Y<1M1k>3@XbKt)CiJzl0`oWioZVwOK*fQv1L?>=+84_`}AK8F&>J8#Ue)vf{ z?A7m1J->zx+mdJ4E}UUwbhhFi5OogIxrp-@?ZNp)XRsx3FCW=NXYro@!nwFhoQs9+ zQ_jUbvYyx!3~R3)@2+!t*DI$pdfyL4Qn4hF+}nk^q$YPDvHqm92jSe zX4t^UH1wPKRoPdfx4Rm&+L&uANp;`TrGEH?>x0y(T55NcWs*4qG#)Z0?u?`g`SHL% zCDji~iKkMtca)qial{Y&Bc98=h%29qI(pR)54*NzJ?e)CTuko)>OaP;SJ<@^&vEeL zF^}#Myf$p_Y0ZDmvv+ni8$07J_6W8A&ZM^bV7*u~!K4a)`Jr``cBo#^h?`jNOzGgK zY3*!sd1==NlJdhxaSnW%a%pC6;WN3;-f zX%X%p`Y5e|c+HbxGX~pS@I;8)-oFHPZKmG41n1d-AJRULIg}SRj>)JQ?17Ca>_rRB zV5e#ZD*_Jf=>xCApDAUm2A*RKed?exHBz2O{NMH>URU2meXW!)X+n?2Z8VxW-qz~p z)09r*R3>%H=*vp>sMk>i48?73Oq*zehJdoyvx3-hjoJPclwkyjGdF5-}1C7bg(3+G3oT>su!N z6?J>%pp^EEO>2CD*3kFDEfbw+&y?7MI~(=aO6?4m@x%Q|b-CMzPbSsXbzN#{cudXo zVMQIsle0o8-2{!Hb@kvl-#be?74)SpJgHqH$e*=G+W)E?gIAJl^A4Tw{_i9;+-2AtnJ#s*8u6sa`%R|%bxbF;eyY2VK9D>5qIP(I+StDYGVOlg;4B(aOGBfuX)4Ly zyWrg^b@fSV@0&CpO*9^Vi@v#bosy>RBz|O>q^Tr#?MHmFh}3U?ZAe?)K=W}8*1~DO z**H*Q5{*5;G%i`fbU%XgAGU5%$E{X~^ML(hU_(cB{s1~V`W|X#x+Ziyly^J+w?c1j z^H|?SeBdHKY)XaAg#o=Z^L#>IvjO>$)?Q)}jW9!kF3=bvUK0II7CON+{`+m$cJEg9 z(`Fs>{^!%IOWyyvq_(_bL@Nz-GM1X7ucEa#Ofqm6{qCm!ur1}d48`=j#0(Eoek!*b zV@f#+CF2ktigpGRpS zk4|30SwZQudHzqZEw+L7Kt@k2vBE>t9@LMt1bwHx;7=FGHs%WZHDRM7>;v~*6#LCo zJ?ZrBeWNlx=t-xx?HiKmA=xIW=h)XT|MxLg2(67XEGHj`x;Ea`5>LsEU50fA|F4tb zj193xa{hTY9*;xxgX;Td_}MDp8;w|b)d_Jk7KXU1F7Pf# zh<`XTk$jbCbDs2DDUfGx{*=Du_OhSm{)3+Tj2ZCVB${!C(*Iq^{14U;Jqe9550AOq z_jWc8E_nQX&69sW_~Mk<3`Q&4S?@c8d|ukrS_1#ief>##o{go@G7i}g_Xmu>sDZxh z>j3tHyM|;tUg0s~xRJajrVnyFvwhI}g=yUWx`O>j_f-ntxqZ*E?;PcUA9z}OrZHX8 zGFZj;3lBm!;l>M|&3E(}Ir_ov%|Z`5qivGR{oodZSqq&*A%*4QyAWu0HR^m4MBxKQ^B2-z3)Kfnj;SHlu@elY1xd-s~OKfj@U` zGT`&jt*(BD(td-qSHtG)PElsaTc$Q6Lmv2w$97{T?l6)}oAwzQTsdjGK{QXT#ruR*^$x*@kg+rOeG|TfRg4+e@-F@U zSV~*{Zojtr#k2GqKELqK!`Y2Hzd`Cd{OsT}>-ze_U$z^*huXF0yHs0g*H)B%?;XAq z_DO#`*H@PI=iWbt|M*n@Igfw*7icf7aWMv{&+9Oj%~_w`-l;Yb=t~EkTOHI7+Hcyh zy1J&5KK#D~^7g*%z@W(Xaqqv-+I??86@7%iWuJ)sA^YfXAK`0>KEl5eV<7x1uRSmP zE73>xuk@qu)bB9*%)Zc*`{vq!6#+Yp&QhXzdv~P3gNeDCCv3`ap6$IWg?JMpozGR` zr-FTqyBy1RZGAkkiI^4++$ru=3kCm4e9!*5csIUFKCc_^o#NX{ZTm^Zx$L-qzR4(j zPmVj}ue)42z_Co!)tQ)}=(D(=*?YpHzXlFk#ui8FT4swppxr{26*O<}v5IWGMbsCl zV;Zve+sG?@mG!P`e?n_`@1J|~Rv4VNyOQXU{9aCTN%H6ZuTdM@>oaouPDT(lju zbxi&6MSAxSQtF3}T#s)sc56wC({*D@59OhCyyta#?%GFRUB&16{>@4C!`{<^R$nFV zvG#9b9@7(-R@ij!`8M&pArJkYhdP7}jWYMh#D!zPQxbEuA7eC+_IEzUhkkF7b>H1c zeI1_CS4uB)>AW{x*1dr0{)$^S>cd?X&86zi+pXDbFHih|o>o7slK%fH%^mJk96I0m zxwN&JL9{7JbRsRs#-g!t@kj$l1NI@RXSP$)(oVFc2eJK7w#@)G!ta!}BKr{0o@5$+ z*zj8}vY&u%I<5Y0e83MoP2tOZ+Qr5`;Y?$j+!GG_98&v!MSY%w_8(*4?)_oV{C27X z{@sHCGl+O-cxO27`x5%xIj^Nh>du1Q8u;)10hFh9&ThRfxgd(^|1SQ*b`^@9@lp((!k4O zT%bpga$7{=hETn`M`?Zr;~srJotN`n9VU%QsEx;T-`lA39FOU~H%FLn*!L6o4$~(@ z?<&H(x(XeoQ~j{UJzHs?jJjtM}is%cC>A1iz-t!B=7w&u1l~d?F?Rd|S ztQ&i(4gRRDytdUe;sgZj12}`*)qy(NCkf71WFKgSe?ILC+8YN4#J)I>a~f-!%1)Q~ z$+KxqOrtfJAl|GH`&^Epo}~JyEhlOHC8!;5%QaSq-xvpAIZ3)3raFQy_F}!5_gh4t z_N|5wd52t!?EzYgKXvz%@*2t`A8@y2U9)+g@%%dhwt+v+7~|8Cjy>lv-=Ii5(A~h^ z8KyNbd@`I_6QL@`Ghmykg*2brcs}JBi8+yT_#E|a9akpL(KzlsKz}9v z-#*6ll5v`9WosX;lXgJ|&odnhnC?8zz&sum*aVnI;9ic? z99l_9+mggjp^T(&=e_hz`s^UaGyAX6{G6e)7q&w|>6e^GeQcyYs*$+z8SDetCJj(K zs0{jetB4QTa{k;B$49&^(gQcQOthiBl(!gkqXQV5$5}qj@1pMxeL6SreH-I#b;%e5 z@{C>p`bKLAYX*2_<1(J&GO>>K{+QNDevcTxt9U;PJ5TnHk>#eb|GaPSDcWbVx<%eR z&MR#Jg-tr!wDSHGbZzgeNGDoJvcle%(=J{I^~HnNktf$1`xT&{G#{?7cplbL2d_c4 z-JK@$262b&Xr`Ax=e*LtRztqt5^*PtScQDAL;pvqOc(Gl1izbyw8?nZyI%BQOwGSU ztki-UzE``Dg71OL+owG?%7~>IuZ>570*{8|hCTNRY?;0Hp2OYUBpXiXB6j^H@y9gKogBSm>jkKVh^;R^$0SEX2z)-O|XuqP5ZL%+|en<3$)?RfsrgLbB+rDS$ zG`D@vAkJ;vA));wFS`48!4T^fMSND)2Tqok4xIAfxh|*q!JIT`wJY8D$TTnEs%(5n ztdL9>c!B+pzZlC#B1-{Ak>rE|>4gALy)mS zAigXO9e!QZ@!>oE)A*$0b#`D?%fwq46OjXzuKuDLOt%-*Q^w zXoB~b`mTAh%yQSC-!JG2$pK@}0;8Jw>XwNS=%G!0|=%l76=L)4|USigWNF#%-9!F>O3*A`VNtaWIKJ zd`$QxVP3Q*#@08n9+qI-JLpp-aDwI$55jmJ*z;{TmuemCdE93O`e_}z`TD4gH->LF zwbPbs*AaUj@e!0B)mFMxTLoSc?fpHSvTdyaN3<=$u~6ruO=t_z+c5SP+Y?HgDD=O1 zlD)}J*fY-erooni=tczhqC#ff-Ocimhpxl^3eQ#qqrrXy!Q)pI=>`M?a?5V9kyp-Or-LTh6+tpyB=+o;`KR2giO223i+Q%wF3gbYAlz&-GJ(sn05n zg9Yq9;3Uz!tL;X4J9K(D>yIJsg|sCYV_SWTb@*c<{wQK{hr!2rbs1UTqTQdmJXX@~ z>o13uB+EvtWL(or#Wtkp1yi1fz0XCw!`*YLE*~59QW!@&CSx4EfBwoCM|)OH!8nRY zjHB}(fpL_V#W>ot^nVfKDDNzNejnp#&zz6OINGz*>zgLtzw2+NjH5bvoOiWOdG5iq z+Vxjgia$xufArCFwCmLW-W+vBt~^J(|L!t#bn?GGN4s18d**2OsVmLVM_^Ayve;9* zc3*y9?YjT+7-YM){r6!|?fUfpzZg`z3O@>i%8Nhc^?8)*K7@65dXitJ*S~64&LlrB zEsLG%#iN?+FS_%BcV5mK*|8rnIOYz~&t27%Y2?nq%g^P`-(G$$cMe=0Pj2ULE*Hl# zyYF_scZGe&b~R4cKXW_m>S(XkdHgfkkGqw|eMG@pW&YT;kzC%HS*tsnuF$_9UZH=d zuF$_9Tt5El&Xbpm(@D>~v0203_^X%n3&q-pUntcNzffAsd9*+BP)_#knJM(Gz&p-u z#-oF@=V4c8%5_xX#Ydts^||BNP2)&sZbaUpWyWzhgBP`P-xbF33s)G&?N=Db2d*%V zcVA%~H(hQV;Y*F*1Bk6&OuU63cO_Pk_~}p|?de{>8K%7*?jaeir&#P$s_)|;J&wD6 z>>0;f&rITlc3yRbv58z^Y-V3!Z1S%#HnXlUHo?oq_!WJ%2Cmds^h@^l58eL$7h*

YT@O}YKJGK)JrK=QJZJ1Z@@#FyIod$yms@8)pJO{mJ!k4Q zjq*$#G0LM7TZ!>Gx^zA#q5H(Sx)A4T)1-5CC*oDPcHaxot{yJq_*wU&BTj)*z;8RVPtEaq8f7d|T9@umCcIMkQGXZ8IX~`vylG4u89DM%!Lbv_E15@hRf!`x&gYHZkqaza& zzi@4?5ZB~PnD4$XxknO3!d5+?`0l3fdyXo*tD2SAtTBQATtM&nRMI$H(8TtZrRIoX zxiMCO$K-=u0jKK>Y*p6XM5T>zU}8vr2OMc)ASwBhy3Rc zQJ(Jt>mPYKM4netfy2w%WuD^Na+>k>?x9Vkd|^-6GG| zQ|kGZT{6#@dKh_*CQGak^7M*4&!x1|n|frPQI+fY!(@pWMxK6==P8GbovZcY|C%P_8~!1#8`^C@>;kjDvdJ)cNM&FhffCF;2@r5?WD zk$JjQp0B0JsI?M#dPJU*lsay8%RJpG&-+!$sC^Ui^ocwlOKFFBUXZ6p<9hOwQKuAn z21K5@G`0u&Wu9J*>zR>UV#bhXNaP8n^uq@SWu88r>rsgm=eY{{$`fIv-?v$h@%V{4qX!ZtM>Uam#QnOcc z6nQs4t=nMV(#4+pSrus+Y-buf_bdUXwd=ppr8)}yH>Cc;>$l;J&$q3~C`!69-bS=i za{%`bLZ>&apT?8k?f1SLX&!k+eeP#j8Nd^VXWMD*{ij@C(J}SB*~b_Ne0Mahm*(=w z#KnGZy-3USNi%~k7RZzs+v_*)@bTi&u$?d0+o$q+*y61hX>Pr}niYNSXO~+KPSZ!sTj>?% zZK-$OChs@Xy7GRzSbT;3w#>WVrqmn!hwg}APdNMg;~q!&$Ubmum5gy)+%my;NN8u2 z+J$;L?`ip)_%|Gr+I_vit8PhB-x5^rh6;&gO?|&cV2?5m!Bzd#AKaT%N*n^{IeJwa za$8Lg?wm?mUg=WpU{^_tP3^Cv&q?~6p-&@?>3kkj(U-aMo$pl(8zJJi?_15W#%fK( zpkqu_ybtgGq}lhq(|T>(DYn#8OXBnTirIHmgUvz{@%XI674{2ZAy?e@FFY@=GnR?G z3%vIO_N`{y4<~!a$u=GL-{9Kgd)Kz>A5H7~u15X%p*p#~X)RP0!#++uUxS!1@p>h1 zRa^<-cfUF@{(}`J?C^Yj>cr>}wYN#5HkX*{V02o0Zw6?$(u_4yydEfd2icj@=m zj=DZ%#9zLM_#QNV%aUrT9j`wE`G)v2llV$22%p$`)z*5Vz{$R^?4@N+AY(TawN#QD zPM&3)f%~=y+3McqGY8SdR2FDzQb}d!?Du+v$0A06qta=`I#xhw9{wU~Ywt zQC>aprr~?_jl_I`8_YD`Z}a}!(a2a`^c;SBDb)#8&4|tKg`WFo@Y8Tep51}?T@lnX zK=13<5*)wi`j&|N0ofy6gMQYgbY35phd*924^PjvD!&_0PuyhIhn`Q8tIh zveIuQs{MQ}HLgGUMf?mcQNaD3t+aMjCiW!j}Xw z4Sinh@2NQ89$xk?Iq%1N*K)OCWDP@VSu>`3I?P#Mq>{ix8db?_-~c9rq^< zGnyzdqgd}lC8kMf_rO1o((qBI+V|7=MLp-)7TWJ|ci#=ErO$UV4t#7Djo*SduC@HV z`jK&>MT<@>xBOjdJg;6;(6%{#i8C$wadE)Yj~mgCK`M7z=e+aWevDCClM%}uEdhNu z;cGVuL#v6}hZu*9XX4utBifQbl-aXPUu4)^_zs4Glkxb&o9>VL7^^bb(x%WxUVBdX$6(}T7^E* z4Ll~f7eC3qCx}B>ugs^h{KQLiP9^Dit6!NWV{R-v?FS#oHbtO&*CmZorft;M)hItq zV+!65xKM8pz3tT}entCW!O#*%d5!i0?g@@*O1L{<1$#)Ie6=7xr?Uv>(e^JhW)|hI zR%2nJIWD$6pU-WD4nFE2`?Dn?h|fdsKF@v=imybR;oI*;pR&5Z?axZv%KWsLuPxc< zw@svs(k7bQ>Zqfgwlw|x%Zn@;li1e2LDpngDO;rMK zBPeO==1TwWgDy?&@b@2v|2$*+iP(?!n=AN!)SZ*fz`lF)HY-fDq|}`o8uvvfR+)h| z>Ha)G!e86?6nG++q)lw>Q zSnf zQRbaZh4>)9I6v*C0-W~(^#wm z*5w<^>;TDT^Lwf7BP%TxIDhnCuO-^puX5ge?BQO48FKaaY28xUtG-F&*iGZuL1TE7 z#u7YNn#S9L(k^68>R20mvG#M zTzp6S`e-a1W7(cTqJgk;?=Y5cuh*5lv6YV6trDH5wNp#|eAO_0T~QkEqO3lB1iqO@ z>ASR^dj(y(?+Mro(R%$?)Lq56mr+IHV{NVpm}wUqD<8O**PDT(Ip$S0(~pdI_<)n&$`|!JWTK%!mv0yBxqc9d~_kUou227>O zw0vo_$KPKD`^R`KpBZysx*BnI2I5H?&klbqDC1|(I!5#Z>F}WjrXqYdYLwWt#0{p} zLEov~?G*v~eZ8rp{%Weftw`_|*vl_pZG}C2Od0z5oz+&D_TH$w_vrn(-;#YimeVqx zranUN{?gSkUuz(ib2J>A)>;(HNuy8nyOMsV`1c1E+Hf>r`C4hdTd7Z22h^u&RA=a0 z)TdTzdk3W@DLUw1c z)>99y(@sjq|BfO@p>?bh{|MVX<>V5qLr1ZroIfmZ_?GR#KE{9SX~dFb42C6>??BFZ z?ukTuYMVUm`M=QSFN{>?diCCES z;{~J*65SY3;m^zT_lB32JAr;m<2#ro!uOfh@_U}M>;|l9VYhJa+g@CJPn*@uS;qC= zJ)AU_+cb{tZo9!lRD`2=_D`@2Zl`Db&LY-jZ=rW45yz&}xFv@1P11kFYl_z=z^5?g z9nrsb*jcVt6t&MNO?OkCBxoV#Kwl12NG(CUmYTJ)^q!nsx z8ujVh@b3UmbynG9{bfEovD;$3Z?fb!^*eu}(a`6dj_fM(aPFnyz zm@Jd(Boj{%{eNEI8{PeW6_3;1)ztqQS}W;priV6oX=$r}@4wMAhw{9HJblLU7d^3H zr^_*_#2EF{GkG_akGVOGxJ1VC7Y2%fowD4feBX6(+QnSm^RAQ=w@Ui+#xbt%9{5z` zQ~I4U{XE8n#=M=Ly(!Dw?$RvOjkVb&?Y~@Hz8h(-fiZkecOq`gXxu~es&B=pEniNm zZ`k+_e_im_v=*noLGs?9+R)xdbq#2-{P>B)qFfn&gJjNpTI07tR+4KQKCO$WuKlQs z%B>w%8_vg+8MnE1bd`*0I`NOvmX2|(Xf5YSz2PRDaSht>r(EnnVP`GYBy?D(Mf{Hf z>AyQ2`@qE=fxm^=7kB^GlXo`q(%D#=(#`EsHlsO&F z*hA~U|7JR(zHvBvhw{c@ssr&7=19BY`IUly+EE==<~6(i_tMw6oiT9kp3Qd1@Mk`* zEOcY{Q2K%_o+!6%JI!YXGhuSP-@6sz%X#+Z%$d8P|C%Rdi_aSkXSm)GwV|R{cig=ctk%s)W=wrM zUardc@3Y>`O|S8$d+gQt-nllMvBTPQPXBc#_VuuFFcU{PSLj`&UB!;C!!J3U8S5Qi z5$W50kTf1SjCnpMW6ny9*G`)2*|wPLkFnebotMy882u{N3G|fDmi7p|NDcf)AN=K) z(3sQrq&gLkW!nq#|DV8K81|E%_qDq3qxt(yH|x{3eFJUt-nn0TU)iR+uRMF@W5E5Y zclTADqs&*7yvjh)bgK8gw0ho=HUx7{GsZlhI}dvI(rK}mfOVv}b2tS5X2UkzQ99K$sg zSvyAjK00Y%)p_^TwyOn>@wOYiWgNM$u%~+Do0Kj?zqHK|eq7t~rnEoI^j7Q}V4nNh^4ZSQ z-47eQ`@!7@_1S%J=Q+JAuP);&vh_cSR`a@Up1iJ?!oNYD#e9$4i*+sTaExKb{jijN zYHy$5#i0jXw?e3o_=ZkM>z$nChgmzZ%lb zHB{cAcdVs%bW{DkupLDFQ}#cXb;)tNR9)(SV_n++le$uVb8835J5_TmpBpD2lQ#Xx zMK?`i5dR1G2j~vcQYTQ6WBaDIhyJ&Zp&ir)YEuySThkv_cf99f;1NyFwK*;TizyyH)aGwQCN%e>kd#$&ttZ;{UBXy21O<)B?tV})hM%pN@Dj+yod@#=Rq zfM!u!eJ<{_;P*-HzOm&ZeQ-}XN^PyDxfrGV^%b7@%|qI=G4{IR%X$d7o6cckGl{%aJI{b zG5;+vwe$gcM<1oTz6SUW%pZv_5vg$Fa@2B+y#Kq~qf;HF??Z-}_uS8864&;w&x_cw z{LcH_IT$Rq3vmBDg7`V&zGDOH*>o%1WEAajeT^AQMz`|1)Md{DPo__|B7Mbns8_cN zdW-FFk8YVnlk@0o-r7y;wY$i=2{^c&MOJCMZWoXYxHVDe#L`qw-ofPHyz5j~^y4{r z=8htho>SgJd##KK0!;XEaYhABSIGNbmLrAy@OU;(8Syd92MW2UF6{AF^W8N+sV+a< zr`}QueOxo&jaiE18CHl`o{lQ`)A&4U+Y-SaJHb}?rPn90_7-5zg2$6*>`ZZfIqv!8 z?u#4`rn-i9pdOA{QlH2hRUP7;wtR^8pg$r;b*2wKxvaF=N8fzcNKx`>A(*I^!w)3sGn&Ju0BXN7m%gk3Ob&XxqxI!p3< zB{JvvpIOFr&=$83F3(VzV;8{RpYa`P8NVdwDC>Ex5ODnP z-Nnjf|35{`2Y(P#=5G}L7kZK8xd(S!u6!%vE@IwAdP*(rr#-RU8%vkob&H(y zn<;(!IcXm*{N*>d%W{KM?kaCN>zf1k~y@mH~&nw;V)$yhAH1gZyN@6 zXDjqMXBj_CnNM=A?<~hae+{vO#_@cFZE82ydoTcrmTaz-b<%mg<+t8CaTe9fG5$D> z@kz~eY6a#O$%k7WsNlW|yIz~)Tpu2%Jq$YdOK)sVqR$05GdhW<^Tf1Qr43UM_DU)B zSw)t8*ITw*ch*RH8f=K#zW9rA+%0QO)0KRrH-;f$5u#CqvJk1D{Zli9wNx(YmNo`Yys}9{LE_2vh#w9+Oz8up=tuvmsk% zicR492JQGOS&aJ4@U2=%e8$!vTx7q5#i0v#Ast)8fUw>JBwAUD*;4<5HHwd*s?GKpv^{)#*FQ24!ywI}kH68qGdyRn1a* z)`(}69>H(iy+f`^sb(yRk7>p5UE=R*ovL|Vn(~pnS&Hv%y1n%~*Es%;0P#%6V|+i< zL;dZdJY9te#MUUo-3{Bvs^&`gPmLDaW&KfSCB~(f()yN|H&Hv-|KA-enu8{c6Q#c_ z@CwWRiTb*xDT~QiK;sY=jr-=8<^0^| z@f%W!ug?36YfZnQr9OvvXO_ar`OuEsWzn?;aOx(+SA?20Aa^qCL6!0TH|E zE$qj8z4^T~zny8m;-&dU2h;qwKvy<+%Q=R*M(&y5sVMQ@FLLZ8tzmj>F47?v19xL8 zy>EUz7CwDXEZk5Oo7XQeDyGu>={0QEYI01ZGkjjXwd@R^Ih(Jkm|~0Rq1o#iwAXs; zJ#p}8Twlf6SI6?sCdLczGR&>7Ew}vxDjoHL-}nOS3)$wI?S=2*J55?!U9feji-87j zk#t?@V?H+qy1r4;brpEolCG~6vDb-)YffHAzyu8kZU3~O;U=x6Ei;qgrN#K(GN3u7 zotkr9{CFZCd>H8NIqvJGzY^#D1+1+PJo{-O&2404i9>U;Y0Q=D7^`}TL-V`oN3z^X zQBPT?x2)KUo4<(hrglWdeZi)G=6Ezq9250+FL9QUyj{jJ6YxM(XXU^W{@esvY@oy} z8>8RDl!y4$m9#%^8l>-o^t_k;4=gcPA`jJDk>z2Oh3G5WlebLNW4!743$m>@$+rH; z+g8jk$;}byPLE|Vz1H;?n<0{+3z`g5k-X%*zG5@n3ptu(;@)C24|k!U3*AxdHM5|j z$XPq0o1uQnO&FOUAu6LC{Grak);Q-7BtpEwg8UE-cbRx8TfW@Be3 zWKGap;CVUFgF< z#Itb5FZIq}ppI;vn;^5hxE#8$KfE)M&2!tt5XtP2e~0M3h^Y-8iR5@1zdO&l`6R7+ zp(#tN))K8MZ5C%)!KiLVP8nw8q_H>xTkzfzGmqB23Ar^_$chm!zEXF+)R$qg`*sP$%@N zvd&MSPRuRhMZk89c$d&A`W)q$EN0$0-SM4*j9#CZpDI**M-@xGx@BT4MRQoATiUm; zF=2BWAv&5LX7SFm=yFg+g&hz4&dFJwVk`)g9_swP5 zssESea^L^rT!#NYn#&EIxx8WOT+(-iwua&sHd6_sSj0e9lA=ATd`T)nb-q_4orkbsKeQqhA=_ybA z!p1W)eOV?p3+u`@3ZF`$@191_H;n1Eks-q>U>q~OmiXX}z(HAnXOr(XH@+9f12PhB4N*bdExy`~OK5RPfKvG#1(oJMPGE^N&5|tk6DW5$Sp@@w$k$-c+1dS-weK;<7tSsv5Iwr;tc=XX@P0* zS=2#&`#Tp?jh@}WGL>#^h5gOZTvKi3d+Uv-D#AtGQa^h&t=oB5lRSD3ep0#rpbe9p5XmfqdRex*hEFfE%Z^N3{O#1b(;TB~!-pv<*Q1-;dx~wE zw~Y$csl?JXNER-mvK_zIXRR~{J~cE2}RvO7Icvb%k(*e>fUwq3b? zflE)*e)#Lz;T+QRH1eGQKbHt|hL?hF_yh{Oe{6v>e#&qK-|7&p9vtr=|*9DZC5! z3c?3*!+H-^DSRORrL z5at_e!zlrlxf7=IUnSlmk9dn?Y8b3;$Dlh;f6vUiksK8O7-YOJ{sW~QmhYDSryFjUWs_$!Wf3>w**HBL5IU=kH%^WTwDAV-{lHXApkdt#V(m9) z^`f5zuR!a&jQF&7?JU0Aj3#wgUMudFg`dwf*u|yP6(-eTju3yED7Fex#jL+orH>rj zo8tZL2IG;t`0#Yj?1If#K^o_u@6HE2^L(q+x6A;))@fKW-RET=41p!-us;pkz9|Z5KpygqMeU5- z=hao86MopP9oU+az|A#w-$Z?goE7$93r6*W_Mnluo5I~-UQC$@th+h=sPJQvfT)o+#&?>vp#kOLmMLfMt~+)ovy!`ziO#l~h$qh6b6%EX?$Lr)sZ zucK#ddohUbzB`Od*yfDmo!Qnd75P zpk6Bff_J}8X@^-a+cBW_+x@JY6tTdY1%}|(G1v$SKRnntM0yR2c;59dCDjiO^=U=t z<^9HVVP|pS#k6{%s!hF6L*v>Z=*jv&L*6VsS^pdOKS~~B`cR4GmaCw0uTZ)7WVyJv zT%rWAe%7~tbA_d5;>VT1pFC66rm}Czvd;=T(e>rtI=;06{tO#{=db*51>(o7f5)}a z!MREG1wHlEQGF8sYyE>Fe(U=Evfdq2>ZQ6i+=zO|mK2?*=bJsx`EL3o+nZ)+B)ie4dn3u9xxU%UVf>Px+6Zcl?&}&1HxQE%fQf3W>ISo$my-SA($`NC)5h z<7*uMRDF8Gp;++Lws`PWGd35`;d|Mp)4PPvNKTEGSP-vGEOhNbYy3{MjXrpu+cNPX zp5Z(0cj?@Zrqs7irq#C^XpGC`7^`fHPy{*GftU1h`2jn*DK3>CaF40ZLuC_4$*l}Wtu4e)fL$o zEK+Z`?l-dRzX-l$-7ir`yXtJHptB9O#_hyU3`d;}bUxv%-VAxHP37O=w&-prT?`); zE0QAq2{<6YOlvi)aBHy>8dja?F!6mvd%+V%h{wuHsm`*r3LX4_-eh#cLrKTD9#wfxF0!jwfTGVS@lGGcIB4%?22f78lLwdR<9Pz zC4MK`L*GZDiCl-)RR^uBTGjM*(f<1$t(}pg*sOM;A;0O?8qsmC*jESDoi;#XVH6qaL*3w(GCf1|g5cdT2*G+o@gcQ9IH`ZD}Ju z0x?+AQN$cuSLi9n^FnD)(_RR=F(bj>xzBM{!ViG*%oK4sL`+4{bvzp@#vWcb!*lQG zljnWpOog(5&u<;=U3(FR~%(b3O1U z$9?ByyREhTQ|-2(bL4o3%=fSDWX#Dd9p*c-G3MRY{uVp}`XXZ?j*n$|67>w1IjewxnO#_XBD_NPhxgPJk@;vNrg!~H`%n3xi{H>q3j8;hV1*R#EjMbAEZKV& z@~w8FH4zVnw>wc5cE)2T3g?$>=Gb6b~;6n=B!gZY~{n=p`x3FL5dQ{<~X!-_doG?b1 z5AcA{bpcm$L~j@#MjgD~MEvp*QQzO8Zt;EXM&iY`Pr)sWc-F@sG#N!z5_4=pQoCi8 z%2!kxEl**OuOfbMz-W1q(jlWaSB4jVkkoF)z6w=_izeth_TTev{(NDll(D-+*-t1+ z>2gI0pPG?~$T*-m$TLFE&dz*)B3{3HLfSWF?hL$jci2sJqbAZwFc zn5>>+lYAw6!ggyKbo^=mKtJp5ip|)lZWpwcn6NdT*{&`=#bW<-vQJ08G|qkW&K&>REz#}!wb2FB!-qIj@^)Nr`UQ;R zu&3`sx*fs1c%QrXB+cRMy~voj7nytMdy(6p_TGzR?R{^5g6}mZ#T>i6T=4gIq^8hv z6ZgxfjF#u5OdYEan@32d?yi&mRsHJQ;oceXIrVjpFTZ8tV(;?UoGzkQ4*P|OScyWW zyjbbMpp*RU+j+vCY3-kS?U|@OpGvB4)KHoK@RX6V*4vRL)`PrF`PLqh^L+#IXUpHg zaiOK{6v=eAO;9tw~^&B${Jc=ql+ipKq&F9t~Z0B-X z%-`I~a0#6+w{NNnFRp9g{dY$-+gj7voG>RTo2J0!;s*eY`= z{W_WckZdn}KQrcQic?0F?Ju!NZF5eU5*jgIn2+UbPwC||y z1P0VM_CS7ju?HK1xKp}4R1seMp0q145NnF+T0`moF6&y(J_&`3&s6$NbGUGE<6z<9 zrX*}?6yL#AiMdAj1l)cvjlA#lsERseKSQLbz7r;d^D@aTK^9&o+IuEx(#cq z_naJz+OQMc3cVxtzEkAD#!n&IskHO`lP|yhMoWdR;rH*KZdWGVKb2VFlyU2JO8=_3 zf4cZrQ++DD_fNRTp}zcX(*0A3l}B|D4|4mLE`9&>x$EWloSIrU-wTyksPk#>IvN%C zLa$EEKV+E7Nm@rk9J9|X8`NGqL+k0xfc9GB0IjV)?X{*pUSC#OZ;7?WYZFa0d}}Ys z#R6x+$@t3vkECyjsU)I~(#?85tQSXh{PaC4e8Zn0tEI2h8ZlOKbH01vKiZQqq>Ttwt9*CqNG>0+n?Jiw%U5NZtGSP*J<2DNeQ8Z zD2{W55GD#%s6rGfIi88)G;ZoPQ$i@AF7FBxO6eF=LJ1{$n)iL@oI7)cWWTiit@T)o zH8ba)d;Xt&_TFdjZxh#o^XkyvTG}0k#&r|x^1dNH^WKFH>vs8wZk3M)B&H5^8Ux5X z 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

0! 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

pTXD9=!14*ho8L+;DIiLh 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

0x-dzJDnIgc>l!o_skO)g@Y3dAAM?K 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�c9@S9GZPMH2R{b&03^v_w|EO&Nh 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

3(u(9i3}*ZcvfTnZt1w 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

$RL%~kz0U<63Pgh(e9rmJ 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%0AJ^%3Y$ap*Wz?abRM_p%z`zk357 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�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

b|E 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È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 z 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ಥVIJG;RuM9<>_A*eL8rYw*1l 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%0A8leb`A3T&LFZ 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­NU<(&FEVo3RX^0wZ?=K(f zicYcJzm6_HZuikkDwGg2&}%#_+bnDu>iz&3x1L8|JC!_B+QPrjI%U!mG}-tH zC>RnB)rHH?d`D&G=)mQhSwctF5|8)3GHv-hASe#gqt=!$em8Y?lUbB(NgTk?n)yHB zJ=Zeyx1FCTgGY+^vqxtEr}w37e~X?m*BTz^0p{GyLPnI+#Q+w1(QD=IQ04cCen>{{ z>^@-Cr6sy~k)DojBqD8ETUMyvNz_R35MYFZd z%>d(fiDRc?MMAmTDe4C<##XrUy7`G+IW!%sobt1%6pkf-p{2t2N!QO~Qp{I!X-DMo zHA-S}hHcClH64?|FBhG*>Hnl~8iwYlpp@_&l0}yG+uw>>7bcnXUREmMkK8=<+se|P z8qC;jXX~GZnZoa`lZz3}DR3pcRMGi|GEd=kx?<~BMgw!jh>8@T0)DUXJhKe-^~ksw zV6j-Zo=IdCEm4xickGr)8HVbLK_21*UtVk?_y37n^qb*jsPv=jrZR~-E@fphDMu=% zG7s+feJ+zpJ90CX`Jw3dy$mbtFl1rPo$|Y9GP)?_XBju6JpP6$8Z=<>yiH}G43kOJ zdb#Mh9sTS~+!Xj~KskfB{1VYQnf@#gUM6^Vz2rIhnHbW3TUYPwj^BUVj48{LGUVy# zYL~a+fY7&cHjx=IkCgMgX1X_&DyBHd3j*uwzG!2EK~@9AY~i|T+IUc=MZJ38{N2`U zrH);8UZdNBMqj6e-G5Y=+32{miJ$7f^b`vb>9d@DG~cT}Zbb9(Mq#d&RjU8p&>wY! zL$Gjc`9jo@V8qlyxbi1cVMl`&137FsX%keaaTR!->C4GIyUM!A_~vmy9w_U?m{{bD z9%VBk@#6n98gjf~TUB&+{M{d5SVN0fmbWpLyd&= z8PW=BmtH+WZhp;oJLLhl;-r|Nv^?9DMZ?PCq`%tdSr#>HMbFj&6K11T(#-GAoE6mzl_cu@_Dbl3ML7-{oEiK3cy#_-Fc zdlEE7q4i>4t`=7@q?}~a6ltv7I@Ft>(unR=T~0Ysrqw5@(H4;-i#4xgP?+=Tp!6oQ zbkM`66Koe>WN3=WN#Rat1={O-*^U{PY*59S7jB*Womu6*tD<5_5f`5CcOk+w=O&IhiGha5>%uIj38F&ng0hQ-Jqk=O8M>*X!V_fa zj64GPj9N9*!a_zmg2syN?~hV(WJG+!hHBg5gnHF`<_m}Zm?Y;i45|zH6sQ%TwCYU^ z$;7Zi!B>?>~pzSozw)19lBa;oo9Le z!jG&5410!uj1JBMe_WReMdqH&}F54OA5fKK5`T{x@%)~}*nq%`IEjQM9&~|06MsRD;uBIy1Am)XobY6bn%t1h zd=6yz`EGaGTejM{dEg&fbH+VT&Y^KV5CJp{s%uR-ZER(JD6&yiKkp3qyJMCK6>nwO z1JL~}sc;XJaj0IW#B3KA@$ZOod5;b7I^q?+3q=T76bUt#6f zcN+D<G)}vUz1Gj3~|;Tm^bSTo>OZ=}5zL(t&ChLjz#U zK9<6Ljw4Xwx-H@ggN$kjdb zXqi8O=Il|Q&r$zr+UA4^u9EWItFAECE!NZS7x0X<>}g2WhknF)#05yuP&`QDXBB(d zYe@}QJL_=@la8}HvcPltguCF-+wuC8Y?$MtJ3S~jrkFDa|4UuxaxHYWVVPuFS>({m zBd-nn+07x|$)rqN8BpFeTvz@GLbLeRQ7W`&$S%fngSSiBM`HaEXV85b3aXX&P%UI_ zXpZid2zXJKXb*4!n4QDe>Rz=j(ojB3k(#6fLVMKhHXxfNTuZ3Q=)LhW!knKiCC}=G z_KDr|7D}Dx-Y4GSA9vH#tZ>}I;XEZ)nV#TqXvt;}bIe})Gu1B@4qJ=>U7ACWmdrQk z68A*(G#@l^_%L#0Z$oQVKYy=)*kZ*s+jh5^q8XgsIThGgeix)dz2ch^*l5A^B4l=^ z39)dPXSV3Mu68L`5&4DXjV+GlmQCmYC;g=%PWq!v zkxMsPrGaLfz|1j7;jRE}&AsU+xIxo~J zU9tt3i|G1N^{0X#4q&tdqiJPWHc3@AmCU}}kL;~bZ|?5A{w5J5=PHA@|F_ESUP3&- zn*v%wnEl)FhwMJ71ph-WQJ;~7;{TfkU;Z=@REO2k7)Jp2oJev55R&(J8QIsa@p$D( zV)XJJ*bZ@to8A{wO!ls$vc7*JDYFn(JIpd0+Ia$w;E+2x`$F4iNpe3Sa;+twKnp!w zp-fXXnBPcg>usN_PuU{}pG3tV- zD>nvS)pEYoP~Lo)6&T6NnHL=48GU8-jMc}B|J45tUxx4n zIWr8a_8vie4(l<8b#FkE^rBfwbgAQB(ctK&anNi) zzy6iQh-*>Vmxzg2R%ksg^tQ>YV7~kIfq7F|B904plRxa*5VyMbS_QscNQAzcZXaWx zvG+mO$inB^0}?IL&B0582LK_rt9W$5FWS+G*DCK=9l zk6iK4qD!}brmrnOhqGB)6{GEzSfd>}mE*3Y=BsfAz_3;tj6~LLsiGdAl+&V@&b=2` zTfG6SYD6hljjT-zLL^17esbzTaK`+TRfF30`-pi;hK$2PqdbRymBbV-NnMOx-PZA?3JIKoupDmlW`p8pZx z#f;@N!hE|Cg!RC}_ znXW4Su2S>U;1r&vc-qYvY0zP=f&6drs2HEp_1w|&um1{S+MK%!1s1d92ntU4-=ak< zp2KZt+v(-PN)AWq-c%WxmMN?K_tMk3y{F8@@QdU%yO}o;eertX-v8(`9I)M>s)hDyl&UXt z9e+#L)W}G`X%hTpiqBifd|7h9)EclZR+Vv-G6g?MQRWEJ*-t8>^mD=wZQEy3;H~sh zm%gq|$i5y2_0O&K#%;@Z;M^ZCZVee?as{U=dAD3OSICEuKnQ-kv~8HL1+fU_jW$hk7_ zEN266hcG!qQ)liSI${Xz3SL4xs*r9L6z-~ z(%%9%3I`bXfe^jby8id^y!jzRNQPo}=8>XY|zr;UzMl2jkY(9mF z@?1}r|6Kg;@{&V1rz-jbuYXSSTEd5J_2?JBz8?B(@vrWE;CzO>6k7sh_{b(EtMkVn zmMhlu6%4-SkK2t;jr&Nw!#$uz-&g=g(O{EuB_snrwSo@rIh(!zQYR4ruah`sc2Bz$ zW<1{#Xj$&D0@UR8-RY{|d>tb<32n4t*U+7IR~X>FWONtlmkpjXTYV&H)A-+OW%Gpz zcOlHY;Rdtxwts_rqf{2>K)veSzb_Ul@1f4XcYgonM0*epn6(?pma87nW!@MM##?`> zYE!RvQm2DnQsphE!NE5>|H=5yKy7aMIUWZU^AqGxOfx)D0jC7gC)4|hXHdV_1-~x0 zKDy)4T9#wB%%|%kBWGOg9u;?cxxV&xoEoNa%PhcID9F+QrFwhd_407aQimE1 zeN~H4k6!E^?GnNj>uOYWor3(vaQa3_9o87o>acYtb|`wD9B@Nev8y1v2>hb_6Ha1# z@(RcxJ^y_{P|;Aud1J^ch0Gn(SI(;v$c3=EeHk~iy7;}%O6N*~T<#t!`&4acE=G}M zGt*kjip?^CeL94!19LVY#EBQnJj6L@!L?-I|w}6Hmt3wIK zx&GIX{;wh-!0po38_|5JH7gs5JyG4}iQ9ixMvQc$H24yFK9f|l24w`c>P%E-oXg%P z76?GS5(>^=w)TwSSi42kh$&i!^ed}P+p9M`NuGNG=j}lDM-(60tq`4iL2Y+}8j3RY z!>~H*uM-BWTcxk6KV4+#YU*zJNj1A}D=;2Q;)@|M>)*hBLOd1hZsaIfQ41VtJq5tz zWx~E-hT;TQRdFjNxiF5Bn}Y9y`o#uTkaQk2=OTAjCRPM#ly6N4{n?Ug!D@_Wf;Y!L z2M!4wi#|^ZSs5>2JKT}|7!1@H2oNaky$_SwlFh~#1ig|6&lRLy2)C89uL9tM5WOU( z07PN0gF5J*f2`15$3gP-hLt$*#yuaJ<0-at6tgDYJqih~L1U+fn!f3N^LGnRCs{sJX+(^?x^f?-ALCa48ZFP@-F z#{5cNATIk?Vmy`_Y2LF%R{fv;os2pA;AU!ZXUvj zy>$^p7tFGC6T-^2ikJRqsZU0%Q5HK-LkzIq1+s3~t@z*|vt&wJI$b_|@%DQ`95(c` z{F}{xBulW>E9of<06p*+k#bT+@JoapZngE6O;7}v7lX0s)kfpg;P7#3Q3j@GdgkjQ z=zUllk}kzxw@ilk(FFUZy$PI=V<-yg#;?+nh{p=QjW3BF<;xDG|nSH4_Fv=n36^Bl%*ah-?~D?S>^sSnuIvi%L+)Ey(d%zpB;&Q_G0s zmPk%4v1HrFEB559hFXAG>CnjRWoBD;>s&1bb+V7hx5n&nR|=t{g?J!w$i<~+*nxmZ0}o$2~_WR)it0CDfDZY%c*J|ko$lOCdP(zz(O@COwhHQ5*&4Y zJrqpomi`ox{nCP;GPDkT8Z_+ z4xH`EIgxP5TDkkQf%6 zhE9j42p29Ee$dM>ME4P>^p0g6+J1PlHfO%JLkqoQ#ju;N&e9Zdq_E__Jw;0x^I#6h z2$`?^MEo^1IHK_uOS6w=I%VIIT{0NJgk#;Iy5G?+Jl}Eb9k$;bvHs(kw^{#Rb!clu zRF~`0`xV9a*Vf(NvEcjLS6@&gbedmoVM9h&h1+uzg9hlTAif~mrHYZrM)@*#(&ZuR= z=#WV)`dxqY=cJ@Q?@a}m7vJv~FkiGlZ-z(dH2W3*Z5R%PvevO z%6W9|;2GQ8$QfHX<~(`#6D zAADA_%&AwhEH9?pS#H7^0tgW%s6~6Og<%d%o6xG~miuhX=pOROvY8Lk=X7{v?yDJJ zSe2I#{XS%|KQ)YUsX2`M;ORDc+0!H}8fkFGPl@Fx7|d2L>&BYtU7BrU6AhM#;Azu8 zawh0^tdYKQ5X}y_>(O7GNA9*+$DaNgAc{cpT4TbV_V@hSj{R!7t6~wLR7s5;(fy#? zPd_OnthU*kzMC%y@)jb5=49Nb<_P6D`<9;%>o7$vTWl$dTF|^#M@?vL@_rDN z*>(#gX=M#L4y+&VJO=3_m*oS5w8h7;F|ROc`!?@F33>Ck_Ks+4`MZ6zxpm?Ed@q>Y zWEW!)BW#bqus?Y&XpUsJdq_!YARCJszq3@gWx&YW3Si{(KjC<*({Q|AmoV}x&qu&r zuP;n`!>SGme}Ra=@pwfSfb(>B{ldm50*(lWE_q8dd)50;-BvB6Z5L@C$#cky%8oyc z2y!jdhy>JJ#sBM*+^$HbpR^Dn@wVt1tMZx;?0$fY91`et6Tb`asxJITQt<}Bukto$ z`QC0G`>Q^6@X`!r5U(DK;|Y8~{*}x<%Jw9_(z`tDAzJWzU_o+vGF-=c7=JtP_LS!u zU;uhdtUV#R9~(|#|E~urnRyE13w*Lop_rXy6ouG=GjbfKt4ptiC+y+ z^1P2c3FVRAJt}=Z#P+?vRNV|$SMYh^bz(hLdUvIiHV-Yb_JrHt=T+=*aNCYcimXdb zcG(#WdoK$)=D*bVf`d`8ey>JKFzMT={Jgf&i}{QCx9u1s?j}#C;AToR3&5| zMeQj3X2Fkd`cE1Zw3x8POBW09@H3?NKcSJ`-;@h>)I7ewwCS8f-Tbc-mM0L(mv`*L zu$cqK%yF$Vbvk!w7c|ZsR{9pZw(anT-gG*y7@d$?)OZ8r#cF8|xgK-o^loww8D;iv z(iK}`4io2|9)Swj=&lLC>Ga9idFe#wI>gn40jiv1Ja-!BWyj|R+dH!S^C4qXc1O8v z^l;fWtG`d|7^1Ca*m>k5+TzQ6TeisE9*tkx6%S8n2tQ%`K9(w?Y8-YA)Bez3dzBBb z&h7_k4uOaEJP2RnYtw_?4cXPz+QEbc;{#c|A||O{yyZ6}j&K=md7f;8paa_8^T(+xut5#ic?+FKt)}C}Ch*f%#87$@!7z_qg*qnX0r<+q z^es|i9>)N5+}#6+2Ktj$DPB&>?SO)RJsX4et+_dDD-Y_Cb|?trc7T}|;4|9+KNEF< z-+nddSpMX$vLObiunyhb@c_9)`u={g+r^XuFCSR+SlA`KgeTPoUtj&o&e-me;HpJ^ zZ^?MTd%!c58lqguczT_ju){`XR_|e943Q~D^_qtQJRXs|yi$*udZi#Ed7#ZSZ9H&8 z%_Fxw$aTKD(k0bPBx;@C&T)Qb#HxW3;}rU5#}?A`uVsk8>^(PJO%OtN<~Z-Z{}8{b zzaZC5pdE+Ke_Q+Jh5A;xYF$JTB%}?V3Fa^I6J)j*ynwSlmzDN!2_CK9nyo$Ds=K{f zn+f3uUH+X|d!(jyY^Y+6ALBEd@;Rp|FVSXOCY~mb8sx2>>J7Q>s4@P6t%9F`o&b7L z1+ZJllpvS$-RD=GtOlxOqHFd*g)1Z!U_L?>AZ6dVBK)J>YdfV+;|lMb+?m^ z{Pt{D6pt9diB9hHgnUW^=ksmUimpFVF$(1E6@$O)jUAPdgfj(p|4x_j!Ji!+)$dDE z1O2(bzCnoPpS(I_sk&|pMh$FqUuk7ARxoHrj*GJoZG%h|NGXm7|a+c)Z5@ZNFD zjrWi@2F{!MNM zTR3t&D1yHWG!nP7hK$F5BEBYY6}AmEaxcjac^W;+JW_UMTE**evt#w<$mD3HBUUAO zXKqrquNp>mOMvjI0x3uycJGRQgV95M50hHDeeC%lbP4u-l`PM9z3tJ~mDS{atqs}- zjaSrYkAbS$K@Q$`$*KJ|P-I@hzL}wPcK}AIk6WDwE|Z}ywu_wW-e8)?1!~;Gevto$ z`3CrACT|T3xrCGWW(-;U9IPyip*47T7P5I;JK!7SJt64GFMNDosn&qh#&+G`_ed!G zSN1nJ!$dGrTKuQNxzKV!=%aPJtq-()!y`+@tn3_F!w;pmQP*==qE>BI76} zIC6ZMz6X53?FV-l&?4xxQEsB*jaAp4|2qU}BJmB#1urtW^Mnu?Tw9lY>mJ;2I1j2? zpBv0nRY0z&_BU<$wJ^EZ1>Jr)kK})^aQ1%t29rb#XzLn*wF1d=avhiRdtgB*z_7vx zd*clDHsS;_Bd=KSGi1>Y|4E9`e>xQWb8V8dLyF~7Mi2vz-c-hxPXjMUtTnA#ZvIl% zXp;1NVP~;wRh?BW$}fYcjuS8iDTdnHlpwm#2PQki$0-Jqj7j{B@RuLoLZ6}ptanq@!0)q8Zd+2TxJ9<1FJ9;XQ%V*L_p?u~?+w<8^z}|y z+aMffEruGOs||$=)%vQOx6T@#URz&6!6W0WIlOJgRC_^<&Eh}bJJt05m3xd9DV z;-X&w(vFlu<4~K7&>=gbaL6Y=Vyb`Z?cD&#%%MQdss^~X<*$RjTsMb{#T@6u`FNMG zwM{`v5-&FZQmaoH@+k7*9KADO<&3K(mfGTC+{q3paecD8BHq`ERJ{{P>KB*E^jZKE z?+T4|hbEA|{%c8~*slQy>}`}7QjIk<>zt#Rh5Rl-NG7#RkS{O}mlWcJp=Rb%8*`}4 z!6$AyrXx_D2UA`;0v9GrV7hmJn>VYNPiP3}*+Y)-XsUzb{XyIzj@mJp__IlA`7{&M z$eTUH-6IvD50vYN!@tgDS6^9p##M-%A2v2oP_<<29e(ic1Ag$l79z_FNm8mRSWtUi zxtQQeExl;WNU(ouPIJ(9zl_5&62w}UM5tJtu_2v}&Nf!95=o!Q!@dih;~tJabtF-k zr{#KUCjYIY;h}p3&I&Xwo=U4S-E-z}46PA-g7k*o*y|YT@ABM`+>ijz5-f)KqE7xL zc>|M{6@8+*cX$X)70_F&shOC$FzF(+l8@Pv)gHK!B(t2I**FHu4!lK-LM!8}R}^t~ z=g{8@NkhRxN78Q+Z|f#y%1j3xNr#mY1mOLdXT}7JHfahK5)K+q99Hij_nYfgI(`Dz zhg%I)A3Zqbi|uQ19R9icDL+aq+`K@g z%AC`g3N{o$4s!(EyP5f)R&%BUIzo03;pzHMd|>z|J|)|{*Tln--?%x`@7lWKznd39 zA2H?HJWN|tDBPU;ZAfK)jwruiLJPFKjT&Bp)yl@#&MqJHWN1rW`xu=1l5Ao z;msKu2}DQ#q7tw6-NOuSQN>`{l}k&q!7Pw1M?pIEq7XU!*lsON1bR1)_5!&fAnfi= zGn+c;ri^)?e6TFh;JfwV%he69#@t>Z>$f2S4kw^pys}>J416?fgp%c(MXoI;-Qc>a zgW`InfX})jz~!z!3^ntWV;gAV(#Ywjbx%6XRyvBa*%4=04q|vGcFN`D)P3I=$IF#! z?Q=*cp4J3>_V?Q9jy016^`&P;NnrHn1RD+T&LFhg8Ahz;x-E26Y5!B^-D5XvE(_JF z&*iG<&vT_f@qJ9I_(^bPYoh<&&$hsamE_t6GN|q3EmmrKc}+e*v!%x$0 zi_MbA?v}DvW}9_)~OXVK5LKmJN;j6jH1gW ze_@s@fNy8u#1c%4H6k8leklfD#)nxak(jN`p#1NLiF2vHs#;konjc@9N2y$sG;8je zDD8J&;nKfXR#W*LSCcAY8YZzv3YCDEgh@ayH1_-XYf9#kMc|hsi!<5v#-rN<*ql3r zeoUP`!q!Lt$K?~`1rHgyzW)uy+e_|Otql}-XT-AlLG^ZE*t?N3_4J1rTbNKrZ5-zE z#(WR%vd_ukd3z2x(8FdV+j3SFel*{n0}u3g=fQzu85%C!QEQY~&1(M2^eIURqK@Wz z1bKiqlZ8|xW(J11+M@ijB?5dewT7dlN4SvX@_EzVr|e=1Iy~} zJd$O#S5&wy-5pPyf*zx24IRh^c3{tD&iK=ezylhQxI-P@F+jk~2F_n==^CR$R6IXS zJ*m=t$Jow>+jxkT^<*b#ZAg_MG8)qkm(`P%Nr{1AiGf}@HaV<94;OC4A*AZ$`@n4U z@JqJ6>vxA*RDPmTNtBb;oeb~+*}eAi>A-2D57KQh^tiE``Wk9+?(v6UdptFDFzIP5cr7vJi5q&UC%J_z3KCY z<;$@W7)U;UHfR%3JVi30jtJ_L)u1UQn3xUY53d(w_C~SSchIfwhYi@Oq_pUso?PHu zV#}n&UrN&V1sGI(%AFEeH-~Es6!KL+tzPWgl>dh%l6Y}d%c?_Vei8M@Q?w3(&?sg7 zIkdJ0W-bskH4iP0e?rE)bZ1rh<9`XMpF>9jYLnsl zUfAGq>3i6w^z#tSxhlNlGiR-xU;7rPr;?kyTWT#g>vYKG)p+yKbe!eG{AEDrhyD|y zx;5z6SFc7HPbQ_8AQ_dh^6To{ZinLZD0+!8DqnjX4W2AEgp&G&Vd0*4S`E(B%?a5G z`&NfcAQ>>(Yusw#)4xFZ$c4_Od;@0oKoMGs(s&rgQ#%+#vCd6OirE_m9Iy62S zBqRh3{zRxQgb7|dE&U-6_bC%!3Hjj`R_VfnT7R9e(mem;YN7F8U*gPvxJ;SKx7V%! zN`EMtkKvAEW_~2rlVMIIjn0!`0RHJ;e>GHjY1NNPa9G~<>+SL%!DUrH1Z1_g8n?xk zkkjLSECW^3p{&%IyXXJ4@fzLaEhV;)d(xo?yB>edV2G)DAnyXvQ!d z4;<4^RhTRa0ENLeN_XDBo#wsniue`N+#Y2!;;{Vg!meyI-Au&!{Hlh~PJlYW(SHZ4xP7uZy}h>e+tMDOME{~sFv2j-O3B9!LxeDh}R zCTU3i)QHp5RB~#Q9}B!)@W|myE?eDLKC~&w(IYw3^ZUNk6#yvNC@xXQJq4j==R3Xo z?d(-aP`Ar%8wm#iQ|WbBn4bYwJ5$#$7;*c@Zy~sIGU0o_`j3_ajgNnyKCs$&vA}tK zublBxn!?vi|Ac|&gn@(HAH4^e=-TDT^!j6a*G{zb^3prnA1Lv#zDo$dcXKq(*?bh^?mZD03M3`TmZv@Rgb))iNW~a@u-F{9ot2w*Qjvj}ZX|R?iWoILN<-{RMo3yj{d#~XU z56&WlKa@id-c2~lOzocfju_4jKFH<WliB^7 z2JoKX8>2VkkRLp=JPDtRkOgav%etAJAdbs~Jh<>yO1iMSn2f=r0HU-`(3RAy6qJKK3%|C{F_2*us z4i*zM5XjGcd!%C5AdGtGXmMnFoQt`7l8f2CEuAb6atM!BAFh)*8?tT$KTJRG&^XPy z<0GnA7O(2^_Tffpzr)ZA)Ao#lVm7?X@H@@AD&BRCJ3;l19C>xw^rHB3P2iUr$IOzK z*0qcGV*nMZ{r0gJjKfO)XjXV=aB|6|@;=$MvUU_!QPmvh%RB>FzPKk1$j9-rrVozMH6&pGe+^Zn7V93flfd-Z1VC2l=c z^0F$r0I6KH+*28| zai@r&Qg2?-ddz4zu!!q!{cu=zH?MoKXKQJB0!y$UfyH~N(^Zu`-uA06uu`ehHEAF7 z&+*cy!-90C!u(~ae-41g;UfD-;oU(>oIYGyQlIy{!Aetv@Ny`_Ys7=$SlmSsxKi5J zU~QQNyw6m|B<(r|Ale+z$JrN;){=wW4iyCG&imd1h!O**!?Vj!Mo#{gmojH)RDWYx ztx&pqnu7I5f&5WL6%Ch%Cs-mh1EWS?Z3}m={in>0wht5e27W1&8*3!7CuDz^XwPIm zny$yXPIevUQL1hM)0D?wkjaxH!!IinQ zGg-{K{4Gu7-&L6ME2P647J@tfbl6=f``l%cSo3*exU^C}0EJx!oUqG{g3M)~k6Z$) z^oCZ_yJ91}v$q2MSo(O(E^{_N{~Itc@^30w>~j5>2A`4?6>Zb9W!j7sQ|b|O%fNvG z*}nNZjxy_X6e_7K@{dGfCya+4c|^~g;kLsY{7nhIV^F`x^0vOOgf>C}6C5WKBATmF zrPv#l{Z#x%n!}{>Z{wpokdue~y|k8?j%=Uj91@f_FhpmmaRIP z7wywr{n=Z@uIf1CPwXRcY#B=^bf)9ej|QG;ME1`b%iI9;==#JTz3V+>L8aMI=*J@8T=TKe-QdTw6{ zbL#oIT1r*{B(K$2mijoZxGUZG7H!bJgtu1tZZ<2}Hr-6Z&7g}5cG z_W2Ro@b^DsrsWgX(v`ZenLgu_{j{nn6T|R~Aqi&CxYP)AygfFazgx=nAz0B)-xS)k zR`=w)fpGQZGHd`6GQD&{x`G+&-EI#X+%GTi_))Tdyc~V1{w(U}ny9Vf;qSH6w3)S& z0yRCv@_+5fDQ5+`l`90hm1hOHm0K;h*Z~Lix5jak5b$4!&|e648p5x`83zU(ma8Rq zgHL=OHw*?{TOkHYdcgC;Q{Ym;g`YLjm*x9ZaBvfBhl&?3~2}$vmR2@!hOrs8Gx&%0Hu{rz8 z?XJ%F`VXr%_j3B}FZ4GuYp8wW zd4CV7st&<)jzBRbS{qKAtbT42;*RG-#N#rU;bj8b=Q)OjWwz`A#@0bJvJ=ao_q824 z3Ws~ORHJFpZRqFpF>>NrYUD)7WlqJ;5cYKIZD#_S=cPqlB?wdQGjP-ybD9>zZArv0 zlLw%8*XJINBg5O~)ybNp!-BA?RPXSG6_i)#k4OJJx~Qj7GnW2lJ9;9w)!PG?>%YT@ z{zH5okF6}T_rg7G-oL(EirWx)z7jUDxJ1|7o0au*TLC=7MfeaIR?}pw4Y2=Nmg{s9 z)kOevQ+sevsJXV@koIS4xWjMrzj`2Gv>tdG+SMR12y9laAg8!Cs}?9IO$4X|miMM? zvm+g$22?e_2JSa*e&9yeXE5BBpyfwz%EXoornkutx>|l|V`9owoI;;6eF<}FVG9cW zh|qH-V}}01`DJe>*QpiEo@|XyWCCK>Yq*52yE(ENr6YNjUL2HQqpIr2Db87~G$3va zle8E7Frb|Uk0=UPodGI@BmJbPj?*8jhU}Dogad#=l`Y2Mb$YZ*LYAcTOD&p9J@okdHt5yC6me7 zLE(|U&EiHwk+ZxJ;HCtnlQmT$Y$H=-b48()BUr3TtznP;qJ*Pv770t9Z<2V8`*Ug) zW3y7TWm4%(3OwYrm_w^=us4|4)*mnkGpz{FjI0i$9r>%_DPc6`JyJRC-2dM&ln z_LOlc3SMi?RRd!Uz7A(0gKEFtS*FX{d!R#04_Ghs3 z)K}|S8vH1@KK1On7K=a_HbDnxLa(g*GcM$qHIUDqkcwf7y2EK-)G9cSEIGdHcLiNL z6N2MPk~EeM4k&ELQBHy@oPe*N!5+0bGGlz`h*7K91#)gMUa|YyY@f|ekd5`*I9!Nv zr^wjww=}{v;E%R{l6l8?bISjd+TWDEh_?4q{h}`}#KA3jYRNv6*9c6~&B4E?+t?ah zSvOjcfiW{N2q`_`AN9kqIMXHcw&*tDr80JxN!JWGeUS8r9n5XD+yv6jT1P(x;9%_* zF7#8SU+|15A$3gMQ}{zd-Q~c9Bn<|-V^x6i({x^@al6>B|@IZD&dlQ7tYi?AE!LuWAO zw#{a;y#F)vC2Ad_TN{(Ot6?4Lh!qV9$z9h$@lZ&>XyV-nkwc5QHU-w0I9Te z9MyDf853{;*AQ?7*HHCw-MJzCpHkPI!MfC2p`zENAA#lmL3pbvVa4XlQ?TNO=*)ZT8QsViL`se4Dz5Bte6^$wYjd@gBEK%m`Sp84L>!f z+9&*L2{ONaDs;_i$1Vn3Yzx#n0mmJ&jD;hsR$T3JO`D7b$D(Jnr>jiY3s%gu?D&yc z5DD)h*aoVv=0I<+lk;Z^8g>8i4gUh-#@1U6jir-jgRv)cFJHZS)xDML&4=UHxmLK2 z^nJ|ym+PqL5OaeqKekstOHWw(k6sCZhI!dz$Q&}t5Zi7$9jpru4SgK?n5I@BvV26qpwa}8Z7A)xFCVr5eMAeiW4V4d9mBcauE*E!xTtvtaqB; z2a6-V){gG0(_#|I*2tOv-qUq0)NK({{|S*pKcAaNS*8WG;CyZ3{>4idKfPG(J6G)Y zGCyZ*MNjLS86rxaV2zzxvZv537Q~PZ_np%bUcFYPO-gj{G<0#i#rwuF`O3KM)B$n7bG3DyMkAA$*&VG_0N*&$xbjG1b)2b+0 z5c9QPcJ1`8($Yr=+=Q|G_25MDVmn$#^;>D^wXE(%i|NS^Y>Q^@2l{MR+q(Rxdk&tQY#{bcc6qHBFXEzS?idTvpRW@x%rNT8Hrt zH*|OwCx*HN;FRan7CtntoQOPUFLj!+n9n0E#{h;_o`amBSNYX-D94uj3#DF3E*DZ< zw(*!BpSTbes3P0hAVsQgi=bSoN-L4t3q-w`6$*@Y@$+;EEb@mz2;k0U z)V_4%;f}>AY1hO9r*(^ zyiD!cfw{Zw!I6>0SJY1L1Iym|otUziSVLn};DP2^VvYnVkjh2t9H2e~&9waY52D8; zv?Ajmiz^^o(9D6yzY$!ig&pg*<@hQko5;Su zPW>ElT&br;{3ZXU$^0g$PEp3V#UlN>k(8T(>q043OuwbXiGjcH_4;(GlNkqANDF2e*GE+Hk91ar zp7rRf%Xg<>1Nm#&=N0)O6A%p#xmvui?R$tzZ%m;>RHcwQ<=OhVwP0t2AWG5_6}(Q> z%X8)|4_43!w^1vSceM7x*D-O)#|*1|%LoRjI2^K0d&0yes|j*=^`{S_T)i zIb%!VWGB*wqrCzC2GS+4%|C%66<>Y+(UN&yu6(P?C@|I)R{I~@)*g{S*1 z-Y@6)F1C^Has_jJiS$3=p%>_d;fbC~H!IJ2ZY#)m8CDm5y#w@kNq^kj-ak0GSW3bl zUl1Xcxi|}v9$h(=9@()viB{j-6$S9t#%okqSWu|`2B9RDg8y2oK?8$#|H^Vsw6sa& zRLIwvv9DS?sDX#Q41amsK~T-H&2)Yj)5eAa;ef=|GtRLF|IWubfFdwwG?jd;5piNO z{$^x}3T`6EJ|)QC<2DNcq10b5E4}>W{WS~;KG7;_Lt2haNpzp?uT}BSnXZ)D^B0(6 zmtg$OcF^B97q=d$qwBF;?h*dLKtt&>tOnzIgFY+~kN8fJAV1}VdU8nya(W^#QB-$w zPk$HNu@*RRn`t%(nwB0}BTaRR0T7V%tf~4C%$Lo`IEo2boJTKUI+c2MqN{lvT;kv5 zGTj;%ei00vq7R3Ff%|5B&Gg#^7G4iiDB-W54Q1*vx_a@ z0Q*$d_gS+U`%QfO2yEPPZ&L9}428^dQ$3`0Lv#+yU;S)Td>){k9hPD^YZXIsZ#Jmi z^w;{hJ|r0NOQHn`=*|h)ezR$}ZIQrf!OT849k*QF^^Tf;Ub0p)3%rC%KDgIB>Ov07 znnk1$0&(LzGyfenK#fqwP_>`GP{V5VSknkUIv33YQ?HhExO-xKmNE{GymHcpMcG3B znZ84NnIR`l!SO^St&8>&4s{Ojtrb8uR}9m|uwl)5T444F{MUPSOr8(QNU8lh{XE=#b3@2U&&z7lobv zK-55}i`Lb0^A0+%gRs}5OgPMCiK=i!iRY>1yL#};`$wMGuvkk7Kt~EeYB%K;n~`!j|TrV=UPfV8EL0qf00=0$K3<5aHJ&U2BCqAl*mr_1^2O zZtG(E1jobO!uGrE2m^w^BVQ1bXr2z;P@lImtwg~A?pubswLBf+lZ6uh24R({L2h9e zUe_*3@GCOBe(}ZSPCZ2f+?J?PT{8Jpged)3dogG^a$@I^Xkqd|9zx}hW7@V=rTtL^JVwS)UX-3VOMz-1=Bp_)C z70?CmCP=(ILJH~1E~K6$uH7%hwpH8~;=D6#uwhWG-x~t&AG$C?=CLa62vPNe#_dVu z)Sq`kYrj%Jd?yf92Tay`Ag6zO{dcK?A_8r@tM$87iJ%(Mv zrkOi;uRe=NyE-a*f4h9Np-}6&Yk~vr!f66PlR>7}Imx>|Y_on*{BMk|#8#9I=58iq;omzd*|f3)HO#IO35kFol8 z6E(q(^jD79!CTvl4%oqeCt2f(sXQ*9h$h*=z*&Aq+9kw2SX~O}>|B;F3G6-3|CQ_T z^Bx{eMefh8J}xp$g$5>BP;v1S>KHn?zcbk3));iH}*IaNHNzZ81yQrJgYOSse~&s){g0 zFGtjE9cTmEJOA%#nl#@F z-eY=J8@HLce-#eG;@4+?NCqstoI=VamFlHv=Y{=>6DR{)y4(lM+{p$F^>?5;Mn~?> zh+FFis=@hZt<00Q4Ii3?G4IJA-eqR(r|crjjhQ%2ei9J(yQ;mK&}_hW>|oVtIMhMD z!0)_KkG&)fp}9XHPQs3iOjjZ1S&cUi7~$;%lEg7r42M6m3er$TD7v`nhWol?-&`*n zIa@gZQHm~ZkcT`eH@byS7zVG!-%TEsjc(XCifh**d+lT8>o*V^$ z7+rI!=NG8^AWSJf$fw!)-ENrrmUC*D`s`aw^C<^js+MwpRtQwVD{Est;5LqYWWv0h zvt=iYF}_UR^Zd@S5l8>b8KPpiBk!=He}^T_F0^&sL%Gh>y+x4sJXD?{Dg*RK$AuV! zveavryV(<(D+z}NM=)J?wv3av@&jyr4JF(nlNW$m-TG1@25axBooU=J)pkm!uV*=(4Fj05;SJ^a2~&c5F$%U$z&quq;FxGa zqQL|0#4Qm<(w3Osn(L^(*3J*8OvGLNS?N;!C-e_v*pSFSMQ-#MIte<|X7Pw}RNin8>tJPXJz>d`53?BVp8!DC53#s#{bB&DO1B*k0l zAZD8UaaUt~CtU%v4b{I|m_HOQM*!B0LBDpfChiQ-HCKKX%+!pHu+mS@ZtW=1?DapV z1<+UTFut0CtWt;A@e=8cU0l5ceUr0RQ1hi67kw{ix)j~vHYQujj}$%WA&fS|guOI? zZWO{RyUwiPAhG8g(wk2|HtusZSXB1Sh6ljBuOW>Ue7WCkzyI2Cp@^gCB=z6Q)PLBjb zTC->!jT_g|TlpvM0l%QkvCdx)W29)Ih(R<8GE2T3ajece{M?EOJc zCg|&5e;R}#%~Yi6Z_(5{=`TJdlW6jcUv8R>SP1Nd9&5$04~!E3g~<%7xS9Xpw*rmX zbNKMyU8I#Ynd&7y@3J`_8`5llgzkv6%q6?Q6cLJti;7#C$|j65H;?;jkb(aW=}sHg zzym2jY*v$0YrLD%Dq+;G$W(tDy1DykI6THhg|IGT7}hl2*I}?0noIsb*R^7MA=iD$ zvykI>%$W(TsASzM-|*IjpX6oG-9=0e-nyG3^2BaU0Ge|l24yB}2<5*Y39*-V+pRJI zNK^tTk*n4!u4J`Wpdl7CsR8VfoF9W)9Gx1cC7D7sxu9HF{&x%(-q^$D86K*@{Q#QA zHEc=Fj&jJt3%J`nTY#$Zr<2#+lRCQTQf0`m^TvE6hHc-rOi3+%b1cgw*H~PmjvkiI zYE5UEFtWl;Fb>9jJrSIbUvsxGcz)|G*=SMOR0A4$x2R#G*(#C!wS>(~pg|ug;aOKb z9+-?F>EbBlmlD%h8M4b1&-(&V%}q6y-l%26E&>m4#EvO4|hb@&>!#qUEc zju<*d<$XeXV%gSiP}d{3$4I9|=)Zx?830FAOR-wDeI%;JW)Sm6iK`{z=D(-WcR`*A z{BFaRM%3X1?ENUA3G2Xgre{BhTsNSSK(pRD>`GQe2__Vw@^7d{_+hW~(R4~FcgcaA z(Ur)Yu;-jKgGY?78O7^UgZ>HA`~6UH2Rk5m?eMDao;~ae4(DoyS=X)C+`af}NK2Sj z1fzcBto!X_&?P+_+Q8c&g2Vy;dzuQ_2HpUYtF^V87%fs$rNKt2Mg75q2i+Xuxvq2$ z3-0MiKF9Y$e77fOm9%+-Ri8BSHy76Y67z2325T=CVzPN-ozgP#Nq_<+lofn>LznbB z)uXs<|B&#Aa}LGx7_0LDZfYoQG9}z>`Wf~m$ef@_+Kki3_!>?WxOlYs--=vj=0d9u|Af2D%In zoTK)KKPTR4I!}65CLNSircVKPVBv96Fx!V4NuIOJTT;7GMYcI`Ev{^;FzMS2+9;y+1{Kim^~2wz9Ugz>WbhNO@jji?J& z9Na2rR+{pml>Z6OBFA&%Jr&z_OKw?W4yxArs}}A|ah3lPc@a(L-uSI$#uOsLw+!h{%`tx)EC5^W}fddZ1ca;O8OY}Ib&xWsI{xL z=GRN;8}DHggO6-JxM#?B7)!Ay8Is1ezSCl{>8*cYFtJgtJ!|jLuTwlx$Rj?&x#kW` z#O+CZnRy!mIkO}&q_>*!_XCgaFcWGdg#FJSsaF57wJ;MlyLKxMT)=d?{Al00^_Gnmk=T7nD!KJ84{K_VFw7M?!@kxDUQ(J9oBc)!w z-ox^M9%3}MxoLoCm#A(-MV?EPQ@!)L%17NF!i^Yi7a#5qX>l*JJgVB?9ErZl)k_!U zDmn0rqM-Pg%?<~nZOE#d2P%V2w-C`-o;>m0^P9*|qt-iH5BvfnY<23ZM;jG$uto}%A6xCuRg0`lkdVFawqdyMg zA+0qWHvY+wLP5?hiqQL4nXQg3bhm%8ikY%vzEVi-pA}JG&H-b4|rh)P+y@2Jo zp}CW!f9$Wm)h6~Zpg9{edyiNuIX-8jC(36y82t3597R8xP;3yg&8h`oJUG88&aYLh zzc_bvN=b0bG?LclK`J%SHk_I~kB^KNZOV`mbhCh0ELusS6fU%k*EmmjZa-hr`uW_$ z2*)pd$@M}+>MnHK0*j8lu=-P`xwcJ6OxBDIQdx|2jy=4lj+dF#hmdvd;6q}yBWW|0 z7guCsmTs|Pe*b(DlfGN#I+Q{wHa5PR>UQ$mnl<3H%=mu&UW)h`P%z>;9I8KX&@{3y zRCoO#;kj>2#7BH&cksVI_T$XJt2U}};Xb{jQ&TBSPKw!>8tfh{U4Y~lh(77t5nMJ* z(2IG0<2OAx%KwlBBc|N!26O)a?6@$vt`H8jG`~op{(+SfKqy zn?rxa?N+~>(DL$i6n4WjL*f0z@g729DD}Jkz>uz@sBpMJGxakKUa*X|h%|s^YzeVN zmi3}AJ80Ps!*8>nA~>fAx4hrW&q1%Xs8U>;bZ&4H*io}16kw2nFC$<-iEVH$1Q#sv zGRVomoZ_pWmMXMmpr$_qFWw6gQ5p3~Zo>Gd{#huD|3U_pRd=MLVAp6q#; z+AISSVgvGEUVz38u*p#PkY$VpqIl5WA{^O(1@Ye zPt~U#cII2JNU)x1Pjtf1ZJ%lF;u_Xs?SurTNm*p=eKj-u_<2w~3HUCQU*Y-zY|!`~ z5^xYa$m3rO ziYXo1g75QE+S@@N(Mho~1fAbjhrW00D0y>M>Ew&4S;XDg5qUzIJVBrZA@YXatGuL@c?F*|sl1)ecNX@0oa3o8-^IrNV_6M!F`R^Kh{Y1TEoe55z>jjjjIu z?DD)d2vXkn$`nPeyz)x(yVSqHqJ`WC7n9p(y(V#DI)@g1h?=F2@jU{8Ixk{rZ- zGkhKY1MNQcsqER50%ZN1I`cf)dmrXBbbh;cI@x*+rT*OdQFVk=-OPvcAyRe2&ZX76 zP~fAW<4XWbHB-sB=g+c#B@N3PTr4Vchl6r6ye>z^=xtAHw@==l5=bj>l9FC(fnzoX&&XfG`%c-zM&R1M>cU?J`|(1mV?X^ z!=Re^#8q>*M54|KVuq;R{;J-XQlhFklsznWg_8*Hn7%jRzng|PVak8dl8+vGH;lDL z-Vi^iqHAeHCZ<;XK1_gjmE&g}vb6g;il{gLkUI?_yQReqhu#dYG%@d*?S0viPuOAL z8L~;vD@2im4d;b@>0x+?@EXFj%a)_pbe?vnXu5QSlv&u|k5Vzu#i%^hfre-yO-@PA z=7cHfVvl7rY7Fos4Gg|j0tU1T}#23GR8FNnv_X{vTvm#ABN=*)b$LM;b0KB;pyj64E zFilOuV?j2N^Z@?6{~=Q|G5hzvqeo^+QsU%qhkXyhw82Cj?0%ugmb%EHL(D6^n+j}+ zE|H?h#lM&S!LK30X{p!IlFsj_*XuLwu>(ItTZ&G>tUfX>IG1FujKbm~7%`B?N;>tg z!L{ce^XiT!_XjoBwjuICl8KWArFCAhv=eE@4uh9myZ@epD* zyk9HqsSP1xC+Y?o#Ms^?ed3y_OKy;guW<42%CEPb(_>kDQvX%u8n$j^vqP%e4D z=)sj58Nqd$(ItB1j_qRf1;UBetmrl1%|ll+?9Uw_&zCbs)(4|z`$6vnvI$$>tg#|}uTHNsoV4Z>TQfAZ~a;Cm@YJ}zHT z>H>HQAQ9fO69Cs`co`Es`5Hs}R_3*erI!6GkNxo-4xOiR9NsXQaagG49;-tfpU7l2 z;4OZ~SeZZ3D~Lm(a*EF0Cf+?q=;gYb`{~?Ap=B_+K1J_F;Mq;6{2=A~M8JYOISinw znh!R8&d6x<2?vBP$WN#T#(>KcJQm!@gBPOthoSAnl@8;jW`%sS2+Vy^5Wt8CE z`=l1Ufnd4!KFdT@cc%lRBNS|w2N1?YcDhHM@&kufq5Hs{?_oi`l4RdSx^ExZ*41qs zZaEMI89XAw)gh)a-f~=r#=EdQ_C1sN&Jq?wSsv59$QeUuAAYNhOSXlUCOI#UeOoj~ zGvo;(N(N^^rBc-AOUQ4y*oM)IBW=DqEzdm-D;1f+$A9QWa%g5qr&KGYWCHRn{qD>2 zB=AdpT6bIJepT2?MkvO-ydyN%E|03Q>6hO%x)3g9wcbO0^*Iiq>#y1y?+vy@`cGOf zW!#Q5L)YCxtP;O&#*R$?@Z~SMVeqFm4KMLAbV|->*JDbuJa29@q+wa4B`?1nYP%f< zx!!s+>Xy;=w^85@zIwo!-%Yr56xucC?H@e&OlYxf7py}VHN3>mbBlR(gKfGnyeqQG zVTT+hekvu!b&yG@INnkIV7ITyH!(S{bVp0y?YDpEEww}}+m(MOnSI&4oA&RfE||eP zv&D8EWwi*^Nt;UQSARwPA&(?0eNx%zBQ;3oP`LJ@cNe*L+)d;c{v<5usd+zI3fD0n zl-wv110JzEx!9NBmGnSKqe&R(l_2NV|7lsVG56=k!&@3RpTdd{$eEp1p8{j4nv3a0 z|Lmjv;^5#fvqrzK@$>)2Pf2gI5&Gpyb8cxi;$^;u*_3u6=yEY5A%woNNU7T6VtO(x+H6|4ihD=@pl!~%~kt%|G^wAh~a%j#bJBb(>F?~bZgwjZ0S!BTh@vK$>RSb5n= zt+(`#R$R6e$wTB=-pocgmfXj9Kb6*P?Q=XY785#AK718B2$}BvPe89+!U#d0eOHx?o=ZKC9z829unk3G9BH0DuhY1*&FjZmKN>$?mSPOm{ z?;8Vjj{$Tuq<+qRTVb7~!s>m&`M%&nUvQi+xX~A!;VXK8;CZ0or?vXz`nc5^LwEf@ zEY6YG66s^OrOlN8`$CJ*otKvbS@~|Lebw}FV(^I*ZUdPN;r$oaOctC6;W{Rp174Wk z@Eo?tC8m}{(AS14N5gKB8bg!DFYl4Y%{A-6h64fp>>JG**rG|}QA%D-DF9-o4&|j| zH)dxHYmxzS{f!07BM2=LqhnI^zW0iQ9&+UwPlw*Xm1D8tpKS%%Jn(_=Y&tvmIn@Ac zsXs#0G1L`T2(i>yQW7>$TiIRFUNN83Ua5G{N9@;GC_7KiUEko$nE%s}q~|5X-Ux#| zHDW+NC*Wc*(1Z~*A1wC>9uS&|V4Xo5KAk8O9WlJKQC?~uQPe+A363m82L|XZg8Thr zCWt*4s> zx~0%QL0d8>N@?PUgM5_;miL|J6lIwJS-tzH=yLC1ofMXDw4f7R4OP!!Y4Hq&a!&mJ( zM|17`3dR`y>M$ndjLq^fBKrrS8t<%k_CuCF$99Y^FlWDkJs|rhBCm0@2D=VKqCO=v zT=RrH4OZyyTI6X$bvF#=4*oOhF+Bc|g5^p-5U3FR9LZY{0TfasG;sIQVRrmakFH4n zt5XH;WtMc5k}Zqjb`RvR_3fBmtD`o@{SLEcEO6rZAOBC03JcKLF*5KiS}pd(cURI8 zWYJ!$fcms}%*$JCWepud0k@7Tr9E?fIM}Pa_edb0_h_Euzp`e9-8yBof#gMuCWqeQ zDgW_TNp+w1;aXyiLfq`ao0}8I!m&?pX&K#nE5LW;h^R;cuO62+&%-I_7goYF%A0|` znzLP=Z3Zmsp8}3Ae_!322n8FwG((qXI(OF0p>3zz=o{ES)6W)T zyE=3-v^AJD*L*w&-|UH^kH!A8rx`u}c%s^%`wdeB?hgCJd$9SN&+?&aujtJXgMq8d z&JM}XGAOQ_hmOPe-`w}ipo@9fnlFX|L|vd)2E^X^UCjgixoAn@u6Ay0^Gk5Y0nU`^ za7SFP|99{i68U7_ulEF`>A|7w2srSN8zgEFvYY=RRp>M;(puH%#nrUDPyJ(KV|ZZnk;kp0!dmiS^4=| z*&f{5&y+@p*9|17t}PFEzZ)F*dQT`xkDTr1kjj+n^N?hRg8@}1u=2VOGEobXow6=m4Tiq!JT!zV9o)sfWoFUyQ=B%`+ zCCLzeY6~!u{=8GfslgM1*b5JG$$!)UYgqKYCfc;-m)#whe#)WtU-LcI0`em2uIqs$ z_S+xKc7)?aa@lO>LQ=wL-7o1&gQ!2UV#vs!`?m&<=AJs%;@om^T~N=h<;-c8&yHIK z&-Tl}YFeuK--WcO5p1xX*LUfA&Qh|D1i) zU#ow0jJ$gb?KE;M2zf_$GE_1JfQBbpdyW(FH%ygDub2Aq0}SFVgD+icx6s;#O0 z{@7%Ol4-}^(W1)k=v_*Mpo7q~d-{d|0<<`P#Zn}>c6vg5Ar*4Aa!Tr3X>ui~QB^YF zv9Lif>D9XNyhhgG4}%m|MM-?+S`bf7NHjItox#~!C)UM+eb(wyP!+OgYK0moHKKbEGRGIgmw0*qL_W3na z`<8Z}3rYr;5OoV05z<`yD$D1L=_g|FfzD@48~yI`_ogaA9HfuUI$ZyBF!-?_K3JG0); zOZtYP2^nJF)ZDVOXh`L5rhR7Eu4|RIs4W&#eUa5%eR)k`Rnkp?bT*9W%}oN_j-wXR04BUqqR@&?+=6FqnnaoU(F!p(LiB zM;EmgJr))sX$MP&n9sNnPmcKedZWGrSg7Zpipa^8pBMU1%^K=bPr69u(;o|ba;p37 zSg;8?=5?C=_j{gRm%UsL96@ZXUQ=Dp91rMKDW}>5IJ&++G%H7xa7Na&Rx!0qS*BWL zl_{rW{1gfEZx6Dw?2=oxMYt`$mn@DQzQzGjMlyJcZZ^dk=2*EjN&Ib zo*}{RA!F|?wz$>kUxpnc@th&a-ZP~reRovKy1PM|aCy0V^Tj}@cgA2J%yhA*Dlu%L zM;95Id#ZZSuSPrPSsrdBtiD?psj~VaE!53W_Jsjm-yxYS$+1U%=U_n-=n6M_E53hzLC8u0EZuOvLP%Ab5Oeog~5PgfY`jP9$# z75Du&xwNZt5i@O zv)>vzWR+%4G*>yOm<8}-IgO;)B*?JZ7)!E%L=`b)WJM4$SX!*X641JqiG;h z)PIjFINdEpSBb*gJ}@5JDjlLH3_94y+={ZPGAu}!5R464@A?QwB8<^s_K9BNdV_Uj z!=WM#yw2%3C@*pJOtkxPsA?Y>JwK{-RFMqozRw6XKHf`^=(Xiw<~`RqS}pG&Rqtq9 z98#Xbj@CoN$)|-oJNcTsc-vK&!hrqcQn}yujpo0N+FCxug_+ulZL)+xqKy*b6cEsG z4&F}nF%~dg9Jm=V+?aP&G#mQHXHkeWV~oC8TQqsCwGj(x@wcIG@)Vn151{bn>JQH) zYej{bL|6O&<%St6ImyCxgkgwwSF@u*LJVyPjPQlDh z`sA^E8F5do2kh0I&c{&~NS)7&5<+ATO+B9FEV;hiPR^0~`N**4+to`GFGfY9E_BIv zM_l*u6Mm_(;@@iRkQEbUdp}uAWnK^Dv_AVE^{1~I&U5rWIuA{{Ne$W27eW2#cP=A$u74N z{Np-MNsf8DTazaVGO;V0@)s^we?rL5(coIYGe#)0zBS9=zk`PV{G=DG zAUUhsQGR&YSplMHiJ#z&TE$JAY60URDfB^SY*hXOhF>vq`o##&Kby-Mo)g{>?(A4> z4WHJCQp8lAxYP?OpVz-c?60@tDv97RxDrV>PlpM6d&d}FP@yoB zUS#6c$=yP+dtvFj2HqvO=qHAoQF`<3=;@t{jEO9?SsmcfA;{D-LJQ7~cDaY?jab%_ zV6ERo&wNITQ?kJ)Vd1G&JD9rBo#iz6=Ki^5j{*HP;;lhXzP`Y0}w zVoQzHHCNY^1ox%bZeaM`rs|qPD_|dfa>V`-^Jh)8)neJk#+H)I;-t=yy-jCL@VUjZ zw_EqaEamhk8{h6eBktAG{{y7KAiy6~by9bgPi;&@^MS!^a&yr9#k+v!2VCyunUTY8@t?>i3ygz8=BJBvPuhvuv7ORY=I@a{qMZtw;Z(z^cQd zdfF%{A|U>d5Rnul1pxt(R%r!kr4|JxB$SQ~6p=0g5s4)Qq`O%J>F#Ffr5Bc6mhF%4 zk2CkodCxn~bMM@FX5RT3T{i*4X(IeZW=(N#<}`b?R~3HwE4A)~C=Gy@>%$43tghj* z>>9_($v-e54;{q2A#MCW_@83sVa|QnBI=l04VYC+0c2T+RmMNOgd~fs?V;ia zL)43bn@A`Me2j%=sZK)Sn@t*EFWr4Yh*t#`+5N;nHJWlfPQoK^e)%jm3`f?A=~6o6 zT4J3pK!(2D6A8qQu|M|?5y(E!m~#?dhAIyLgLff!=RB9NPdLl4$Fb*xyt$PuI9~aK zOlM7K@uvXop{$uqnF&Zi16&%I@Y0BMo_BsR?FkOx7#0}j*ov1@B9P_A)Y=yM_ z>sF%=%svv|oFZhaB{sJAO53OgoSU=!U?)J;px%&U+&5pau~`K?yJ8D^9xDW^cUC-# zIWODnSV?{!GNooUpo_#LjUq>$wk_KH@&$W|T&@M1IA1WbsNgIFBA5kV%Dz+qlel*M zOW{++)hu|7kM=Hcm2|oMnfHjRHU(z{;3ZIrqew}u$1tS$Bo0*heH2Lu^#ub!mz~qg zXbbma=*W0bCanSD)Ah?Sl)m_a;lh`}Gd;x9gElW(WHXjm-;nEk1?{?=M&fSbBN%$a z4k6J8Efj@{1Mp3R3uR0_4%q~IF)r#4AcQ0V;2MbsHIRq9ML_5P4i1Y%9Fk{Lov~i) zL?oOx=oyN)r$w)WDaH64egzte(O47ZeU!)wyG!}3+i!IzFdNwOSqV2f`1vu=dAl>A z<93ZS!$uJJj*G7PvF6)(KDd!AfzJEz^J?AFqX)4BY$x3@oK{}1l2vM(tX%c^^Z~28 zsD|I#4O|H=-~&w(5H{}NV9S; zrMTlj3BO*apnTq_@||J;zCqJ zGb%gQ`f}AeuGA#3W>wWNX5VQ!CRmSHcqtX1rHWsEh3jIZ$bWsx(=X&~*mgfWit@nYMrjU1KyrKLh10e8L$RzTvhaN1U zpq5KnZmtL{qN|u}e@A%$_sF}a$OK^OvGG81z<*pu)!IAO*lYGXuO?3ICibPb(Q)n; zG1NuASxjKjK-zIHS z3LqrPzRlHa6Auw!xl={5&GcJPR^Yj40K!_7$EJBpxWW%*j`}!|(~bw-&x!pY`tG~a z%~D~U5Y`E$hWe@7UbmoXO%>vL%^@g$b2sJ<6zwven6KcXQlM(UbQZE(&UJ#&J&@Ds zp7>FK(QQq<$Iq+v3+Q|0)9!BY#`pyLVjXY0PDVpYZ0ty;Dc$DLdzYOEJq=@fmF@db z>sy7>LSDa6C54JA;s8Q$f0JoPBgW`Kq2OQy5aIRJW9o@)k_Fa8jM(e1SA>Fg9PrHf z#d*1ZH4?$xKcbYGMg2DFDN^DSKLUbEY)&yT)8z%eQJzn;B8}AyOoM;Vm0w)>I(h@H z3FLojXE68#zPaZouDdVYOWb8VoyGPBmZmp7(%xy$j+fnnB4wQxaocHhoxPpxss3@Q=0pk@iO z#_Q|Jt-gFJ6Zq+!P%%gwdq+O;6p<-;nF8S)=BU|9sIGGLG82pgP8G-c9P2=_|VEJqYM7n|C zuPYFzFtH(MRkN3oQ?3*w??F)P&FwZq;a$;e(S%PM3aCKQ)w>A+8%(2!sBc@RMs>mo z0eL(@Z8y97H?w{k@FD*JFD;6ReJa&4s;g0(mlj*WOTX8pDxch^k`7f}9nih>0)JhS zKbK+f6F%ftfnp-s*S5v#ctW$Uv)JxVN-5UJdkyX+8bJ~p%4JiVgyADTAah$CD z6UNS7@B586Za}$}TFuSxi`>fSHtF5DvH6&Edq0CwOffi(?0Po@FF6~4x0(%TQAUk1 zE(t@83OsRWmqqhT`)3)^Q%f#ppYY6n{zVj{5S{FSy(yk*`FBA&*+Hq!Tj|#7?KhRp zSdXNr+)WKVu1we~t`|NfJx=ZfXYCDw!`++5nAaYS34h9T{_T_LZ28J9EaZL0jL|(? z;8i+GPlV0a4_-{51F9*54#**!)*@1H?*48S4lmOJ5lQ1TfC1}PKWMP908*?}T2 zWpXw5%R%Vnv}u4s#VF2#@T=Su=ooDt5elWbZ0=K;kd3GB5-4NBm&rcjIVteVv$o8a ziaeq+>*WhbUX4T{vIR(LR&i*oE$t-S$L=y?neKA#8+(+V>})PGUQ#dWJYo>q@SK86 zyNnVeF4qWI7rI!Mg*-4@sykx>-F2cs;s5^?05udDx=YWK*P1D?6U)eox%xa7jdhza zxW;y~-?|DA(1$c3kej`v|M}R-`0ljW-wGx2P>XKbcB?l%NG8sPZ>#pnxNkQD-^k#~ znTiIy?3%Q|2YC_dU0i1mt{nHUS(cS;_6P_J0)PvHQU`&jYMQ>MZ+SIO!nhz*bXiUF zcWz+p4{5G)Z)^x?enfEf(e!@0gVz7|sPR^Z(+cGjWkt2X{V{9)kR3HXnKL2vq@|*#pJFJb+xpDU?rr4H;6P1kGqbT93Myi*YR}X zKV0v3KKoxghVL2om!`a(bF+OKU^CdRVgS=Z zEJSjoCk%a=D;g$-B{VO`wj2%}d0=8&mhW1F_@r4+I5?JyhV=U(oFA{Ca{ISM)Mu*f z>_0%+d5VXY%DOgGLV{#aB*wr@0s>`G@Dw=RO8J){IdOp&^F?3|M3*x%5*=l<8#u1=|CGxxycqQ`G4##$bfH0tywB|e+WW7A#SzQ)V zbT0>$F3TlG;LRNa22FA3Rk7_5>xm}}m1x=&R2cOL@6Xn>zjF!9Wm!guC|E^o&U4Va zJ7W=&Q%@g@4j@{SetA*jb|t4kgU$f%_15(LgJ0c;Q|~T7ydbs8J6)=|hp9J96mhQS zUM}#xpw|l*9sPloH~1@vFMv(aAVgT3uLA#mPe+?I%^oWiR9NHY#!zL)kk76gXwcXy zW2T09t^uO1IDgk_6|ts*5AgGru=}W+9g$0Rg-9F(9i@`(?3gcN_W1EZezg0aC{wyh z?W~70?RVfa8i{a%45_7$2zl2V0M|GmNX`NwnHZ8q(j_=>v^rd7htLjwNV^vb;)UV? z^uVrg1A26}45uSbZ{e<{H^AQKtj1Do8>fS<$N~KQu!el#4&(<#vL^+04j%%X<*177 z)i0MEB){*dNOe-18x#b@L)N(<3LQU^7e*EO5oB9R<{TPWxT6cHn0ZE44P`N13Lq(g z#r@Ry5RWQ81JHfs7*?0NQ*p?^}Us5Xs`?_uQ#x@_dyCLsBCVLq> z7m>@=q3zzb9+^C$r5+c0{z?%V3|+ppX2rV^Hvw*c z3iPc5Ac_1jm=c-o{AAGWsIy*k7@oZH>TrhZtEW4wP(VQ}K#%4zcZHo)DMmBWqV-?$x3*s90s z9i+_fkMRJ|m}iBruN8cG+X`BnQ3OomSVbMMz{|y8t0t?1YgT|tn`Y4dly_;Bm1Fmc z#O73*tf$)clv2EB`MJy?lL$$$8ByoXP$x9kkmP#!rfL96gI&e<-fd9@iXpBg{ z2KM6Iu-cOcx87{-SnA$W0f!j9^y_c5N=#^N&jKzVIc{xw0*ZjZzJtnN68!mL0Vq?z z$0By5%dzTz=xZ7fL=ZlDwZx4i#j=9CaRai9yM6<+;;PTzuVS}L8&o6%5wf2`Ncyx0S8EG)2gEO~>BPuzwp{<5{ z^8Nws0JZJoUyYJTzK0lSuFS#;?4tL0C4}4<&bQ(d2G*)*N(*mzj(y8*a%ykVJKbjW z4Zj$&t(Eq`7;8@jykFMXg#7`qqS*6}_OAxQwhmnK;FnGfaG+%`Gr zIED}qg=LkiS`MQjj}>GwBsgRreBCZ);7F(ZEfoxk!DtlkS(RhLWL{Ik;EyP*))%nx zx_|CVO!GVkC->I$dcOrf2oFwXC@q162sGsXtYkqm;$#>ToENx?ptDrp4b&CSuVZaRqL z3#=yj-Z%9pLZC-qv7)THN%3l#)IqluRBiR!EHVT$W~lWZ8rd6>rnd3K)lRt79icQh;%R$e6Mpg27xZKu|J67o5R2bJNGS{F!oH40}t zTC~(QbSHZpaD@C4fx}UajUskSaILNoYd~H{e5l41d7DaF#Tmca^7xjD1_iyj?uL63 zyp81?e-L%$pit8>j?Vob9)xMd{)V&C%C5Q@PO$;WJ!G|dFlR=dZl7?14!3{{YWffQEbtqc}8aRj~44JS_IG^spI3)-JOx+}%&H zP%#(;R6nCQ>#F@z6|wfOQ@JIA6)MNN#Hy=2HZ!k5-+df$%%#%u2<68BwDw3p+zn{r zo8XsRsm_O4wm9ihZje65idtU;`51F<>$DUNj`*Wr)?@1P`|xj{V2#M?B@OxhXx|kX zfAqBqV>I6-79Iw>sNg>Xj++mE4z~aff3p3*xke`cs>s7e`9HrO=jz@EMDiEI8c$&| zXIxMDeO2Dy#w*X4jj5E#Y99XdyWKq%zcBJDdvWZOUeUAhg#YxQlZ2-#J6|9LJ1}Z7 z3}poOu^9vI^M9AiCmAT0M|2@(%lza*RUb)|1#2%^ScAkptb*{S_b^k9a_&~znrrz7 zBK5rWc3!Tah67s4$Je5BX=IZxG8JAkR{#7-e>#L3N}D_U99tI;Y?K;GTmMh5d>9s3 zQZRD7vQUv8Iyq`ue^h73Gu<%de}qYh`;Hp;|25iWwc?)o10iqMNNuv}L7UgMgfxy; zY+xtL>LI8)QfOkgfh{qF2z}T}0>1B>dMgygnuhrZ%c<^g$CfU09q%u5c`hC=9z&aD zmKiVmtCtWigI}2A-CITfgDl5PW@fByRGzBmy%Ps~ zC;e{6$G0jq3?D^2^uIz(Y}iV$)caYE3-WW66?K+*yD1A=IM+e-eePwCP zuoQHKL<3f~pft)pnz=IP@0PRdrWrJJpX#D~(R{(^X*+*IR$x72V^%}Q`!4_^tIk&w zH}Rg~+jn0|Eh;V=0j3+Te-zuDhkjEZc^1rxN$@+U0{B5D!RrBAaJnXDpsv)KPCKM7 z>!@Q74}w8z5BZ(BQRyLHif`-jGr&{do|xhNq7D$MFWW^7b4VffLjx>nwQ_-c9t?X=2-ze3I^xg06d`~9FK&}vpBR%=NK;?q z@y0X;$unJxJ932etWcc%c@#3GxeQOkjN(^U%E9%kfP!HDd zWcap6YU2G_fZgSDR|C<-JiS*N(lF2-qgX4TJ2U+PJqV$+AQkl)3ct88fQsHslKCO}vnEZz0 z^jz+I6GjDF|L z9`xYa1JN;fZ1{}y!05%-MUe$=fJv*ciX#gqwMrgbc+TP9`|YoR;>mqS-BiiL*t(-S zc_Tsad)uM2$D81dH@$|za4%=?QczM>N%11rLb^mrd0y6@V|`zhJgMOPmj7>mw}dy& zxBnisB{ckA5y=r8-r!@$aO=e~sKR1U~tv1OOUtX|h3Y=5BBJZ0M0|I+K$_ zWezfK`8PC9@63*#hcB)!Er4lLfQbZB5jBAp>6G?m(~xU z1zSGKg7W1Ep#2s#f`y0*IAT+l%9x3>Wyj@p#PWVS(fNPz;?q!RuZq*n8Nr2JMl zs)J_#bI=Ik{j`r@hPN@O;4eRZgPDTvP^KuZVO!Ras-bKd4yrl*BU~(yS=PMKyG zf0cT_)CH0C3@nNC&h`lk_+vjZ8e+N^nuYyUnR8eQoLENSYUoe{!CR8iL9s956xSLi)n_1GbwvOZhOzbxGrmNn0vAh(u+26;HVmMZE^JHkVw&`#nq+{F z2C(CzX|i+gK#^B)`#|h~RbTKW-dm}BP-&>bOUzd%xVr1AoO9QgHaG&z)H-+x@#5HO zaVvPrhl2A3e|O3Hu?EN1BxvN3Az0Y|;hx(eJBFjmk*l;al($viQF*?aFk#%^SnUl9 z?8@XP#UVeLKL!uT2FDxpLsq9D@DsyU+5`gZ z8I4M}Kv8HR%F-70Z0>X>I&gDrlv0aR(}FafVc$PLA|E_wUbwrAoJlCQbwu#aWC7`+xo(%VereipOPeDmXU-(U+CMPQU z^4A*j)bkyTM{WMfPCK*PYN`SL#@*6&t|iY~(QA{rohC&R)j3jr_WJ*Yi3M19g9i^eh;R>uv`IEobnt+I5L&k<=9<}joVmNTdo-vRF02rXzcPH zb_LX{w?@WbT+6^~CP~kKDxLlI&B@Mv%KvRgbXjW2_=?oP+$lDhx$J210bi&(KJ-*R^q^_;7Xm+MkEx&Tj z&1wIPf)9;*u!b0tX@S#AjFC2&1q5N{WE>_O;YgdWVHP4ZRLm?Y< z$C$MDa5P6pRll-k86=4isxx~1pN;x!fQ+Qr~k84fzzmdILmWzj%bGpFg`@Iw*b4<`8Iq^wvVTvPXcGK9~kP z7^F=WPSy~AYoE@4W__r#h0GdMVt#PW=3jl0Gon;W3#tb?Z_z?txhM8^G{(d+{!!!G zpTY%gaQ2FjvToiIKsU|{P08$4qCY5O-t^4oWPc6~2@`C)fDRrI^MK!ny{f0gG;W>z z=uNDNX`Pmyls@i3KBe}Vg6kdJgvl<6%AOu=XrF){tvR9(46r&)c0|{L3Hwt6y}21b z4Y4CmNR+IqJ$}@)Otz<^@xxH_Yg^)tK?4wVs(dso0WS;f;d#(tF|+LNNNN`Z8`HRt zoYe*@WkY)iYuM`0d^5*~DQ{x0Y-oS#SE4>a^jMK1kSZsGM4MQsWN5PSngxE%g5RG z=zPXvPJf8eNBW7IC_b>;DSW0ptwdWThrzm3hPZ|NgtK|A5u`e;wbY6zkUAxsU8g7+ z6ZoCZZ#y2%)?1BLkVhS}7wW8441}AfcDMw#r>7w5H7C?MW!Ly=57T*R#U8^+-oGa) zHgru%fmiW`2;Zoc3lQU)Y{xt5$Cz9)I0^`eI@lr@EQ^5C>ZVzzr1x~1--Rkuyk>I? zP81}m!YE2-wy1a0jn_`vA$@({{Z2qEYplfMg#ly>Y`e9;`+%yI6oCpmwQHZ2%Rr?ZtbgHQCwusD=xRdh;Ek8+?dIp5 z!0;g2U=aKov&;vSl*hqRz??)BOz zuRQ96rdadE&XSKKO+gkVVV^;7S?_s)7X`uCm&KVR)BTIF46wZj#B5*vwAz>XM0Vjs zUpMJo7O*Ep-P~Sdh@i)c;I?d)Ie$P5&qj<}eVcDkUX7N*G+wlr;pqoI7Xr51E%q7% zy)0Vpjlm}KWIBndWSSd<2DDP>y3*srNeu=x$I#>p8oZnJ-VYZFyF2$cPMH+N zbJoHLAF`pSw$(UZRFJ|IDvx1dZbf^0_sD>_F3ey<%|6npa5dfy27^k5tZsbTDo4|e z8quq_+D&5X0yG^TE)|-ks5BTt8)80y5P~ZXb_M`l!VY*&&TEanVjUaO30oZOo7fi@ zIY}F~Y5x-X25fR6y3L^C#puq~V*ZVlY2h82f3QNMfB#Q31Zk69b|GE!g^jv3!;tBW zgzJF86DQmzt3EF^)k-tF{1g$GX~-8Bi8LszFdS9n{_u+?U#L4$Lyl>%;7y*6Gt2vj zo!@n`PWq_wcdr+VEFm&|;K$ZRW)RR05Z;bm2{~>?WcwV;TtEx8)|4mh3ARy^i=LQc z>I<(kmWqE^cPEW!d!X^!b=?3e4Vkm1_8c_z!pgbGj~Az+AtioFJ$^@}Wzx}O3szy@ z!1Z&l?AW2T5CH=BVaJAe&6vleqe~ho^dkJ+|CH%Sv`3~6$_5)>y$jA&69DIuYAypj z8(fRXNPr9UElgMWV;<9qW7fdh-0RNZ;EC(=?w?d=Pd^t&BvT72jotxjgEE`NvQQwC zi_JPFNaoN_jltIwTE;8li2XMNhyLNYvc@drM!@vkYf=BNwf2Vw&a`8qgU!a0MvdB2 zLASS6fA>X#o0e~X7@awo8pbslJsrYbYw0#uR(Xbe)QVI6;eF-dP>fHfcT*c|Qw9H5 zc`)FiIO5qGP7KWEUjRDHrsmG=@#6(HUEd;9v)8ub?o_HW!icmBzI_y$?F&MWExpfF zWq8a$TGt($^A6$??h(4!2kURFdKU2+W4yVBf}>jNK1S|uOHVl~)=(C^KE1bEjkm05 z<1Jt2H-NNa^&zdS`FwtzfEZ#+RRrdl85ENPrM7#xxiyqSks|t2Bn~u>-$Vs8c}0OX zv(0sz?Vt8X_^!U%bFMT(CpsSrR5HRKle_;JAoj$GA!S8!qdFa~ot6`3t3APs#h~f4 zQUYC@cFijCeloC_f$;QL-_96#+H#`7(pe8&H40L5cb2R)K6I}H9J+hmT{0UCx%%*8 zSMAzu(gDd}!)(m_F z{d{5y()lHr2|kuXq!$t;3w7{o;sB`^FgQyAu{1mZ%nEBNC$a#+&vC4s6{X`m8k-F# zSX~1`Ig$#Z?ioV^AZ5+c%`hzYApWMnBIcMjn7onA$k zxWw~LqaFo+7xDs!e9ba#579&WKN#HzbjS&({1rZB4HK73pl7*+ys-2?tnW_@wZ~?w z$7J7Rhr@Mbn5C8^5@DgGQdgr7cq|7bKczP;u>WiIPlLr$PxbCDCq@2MI9UGE*01^; ztFtV;L{oacrbJWE+m0*koPD%m>M`50^DkG%zEVPNqIdT38iOSreynPo?%F}eef!Yf zKjd66i+}u9<1lY_xbq3GxAvyQt+g}PM90|xp}shscyY?#c$0v{y|G`Q-x80$lA&67 zE30P|nmr0gV6U865A(AWk*InlLKb!d8vm*72|d#LvZ15|YByhfhDQYoOs0uKtCO}G zRY_<=eejU{gVLwqA-<|VjhvrHJDq*7<3Cw78>2H*m$U&6d|D8>z^@1|xw8jb zwQY1b1Wnoi-ZH)SD5z7R26F6pq2l!umNV3@2Y1_WZCF1G`wgC3$3mlksY(-v*O#vp z0AW<7tpU}*5>%~z7RF;uJ!Y(QoEM+zsgXEIV$s{Pr)7i0Q%7lpX>N>ZgsvGEKakmk zbX99^vG&m>X{hSXCU*s=GjzRQ(b<&q_2U^?dc!On+~8R%d;WwPY%t#y04Y6Tik{=| zR_yuI_3;hMN_$aPVW+3ObPlv@TTZ&mGY0GU?I1e9M6Fxpf<>F-JPdHuS`UI`SQVB8;ivVI(?& z#O=2sW<5@7TKqjXFVs0Wl6j-akvzB;Ivis(Z&m-j6Bi}N_WP+;)_p!}jLDAUVuEf; zqEpQiE)I(O9&5`EOjwv+k{lmXUlxrE_kt@?CXt_cr8KH+ch$ohv_$#L_Axx@D96>9l*XE zRp?ZC4IRSmX-#D-T!3Zp1eUe)uaEwG=Pd)6*Oa0kASn5kM2!%IEQ;koOqI<@2K7Gu zcxCJbBmVt(WkTKvP8!710aMslxya1ayEjSRH*b?oou!$O*?YF&oMnUn%}RL8qTk0E zsF6S$X1`p64Gju?Lf6cKbAKxpnlDP=H9VY2m6JW3?fQk2mDDB6UR}ny-j%d3wkzt7 zi#}zX?{ZFtxI#U1FX@4etDV3KGq{P8%76BUxaQ5LtMR6-Kti~4{ z$;In_=*X2g;zD>%l1A&*hueUwzfb_r`@&OdHrJn#YCc34eZ$~*bLL{_X~XUB_Rakw zlV!m$4%9RqF{$6iKdt{=gZ_r#g5m^h;iew;=Gs)JMJK|^_B}ycCax^Gziq*nFL9qD zF-c*+Xqe|;APB*mpQz6(1eFi-2W9=!w=|Mg)g~on_?5K1KCDyyaptys{Y2S|y9aV2 z;`L%wn2b2;q5v7;?}|{8nD-kHBh-^U%hx0SD8zdL7irktkVpzHYnJqn0!%*9fZrpI zL2r-|Fb*;Ta`_~DrQl-r2X31sbU`m{mt4^eBuM559@HI-X13$>0JQ;r~lt%aLH-=@S(Cshk|L44liyx`t@MwrCAm`z}+?P1g);)L)O zLQO?Qp~SWy`ENd|kS;S+PJ58LU!n%Fi%Lcv{~Mh*vcTfUIHePNoQ1lb@c~brSP6}Ma z{*VtWmJ^~{99PZ@Ah;{|xl)%4)O`bJ>pD9$S#B|HAUEcha16=~(CEr1TBsU4SgJnw zU45d!@mt_JWunpGchS}h@1vNekjlxX5kOwY2geb!yt_ZD6IvgNCv%E#K3QcGc|EJ+ zH^t>QGjMa^#y0WA!Jk31pidKwxBP-aj^P=qf3~Zw`QXl<((dkV*i8hO%yB@rr8>oR z&n;Gw-$25J5@!-!8sqAGHEr8WcNsr?-Z0Br|LbGtWU`FzQ#7u*c!aiy!R=ffw3o&{H^3f`@3fBpX4o5A-j zHPx$op9q6Rnse@We=#@Lr*)hXu#vN-BT4%6r>PPtbqv&agYSCDN@|nw?FGma7bvt) zNzWs*!1F4SV28V7;e{H{cuA*W0NqW_i;dS0h^@ot*KrpN0Jcg%6aMY@lJ87ewy1#L z9{p|=Tj~+hrgcc`M;N@~6s7a%(Cw`F>U5Y*v&%(8|08eZ#=X6yJtHx}+7X4uf&<=R z6F~*hu%S0Wsr0hlV2zHq#Xng!{?jj5Htl(;UiH*B!mci+)OPG6f%;1M)6j4`yb)Yg3^Te?-#58bW0)7iqGz9(!SLa~1ubejI7P z!F3c@;cod*vh|@OMv7Wuy$2MLI>GXTOUcrH8PQbv#zWzs*_P1#@1mkqQVng-K1hIH zJc!l1;wRG`S$+GxhtOu(W0&i9Zv6=-fIkrhm#B<|4jW-e|g={S%Lwu{sG z?Vhn{itpFQC33(I-S4wTyG$fkZ1!(zTqw!d;+=T1@H?31|h)7!|x zKh5u{#C`sf!=sYqozU|3W6nx!L~EG_pB$x9Or^r-1(Z%sZHB=d?BT@i8`*5T%^+>+ zWc9S96+V=`WhS+cZEAt*>Me<(Z!|RqDYs_Xa()vOOIoC4WTAKUMj7a22tqQo(s*n_ zPvwFl9!rY;+kKeOH$qAMSnU+p9&CLL=U=@lFu@FK#MZX%!ZVKWuGMVlR^Xyj7J8_N zs+j&(JGMi7_P()<|0-H%@sK}kSXhUND@%YdCqH<{T z!|fI^E$phegE*Zs6m=7_)f^0Ses^f+vD;?XTiMrUK)qXM(`&nVzx8|bP$jc!$mC*D zC}0$$A~SoDH2;j>Rm_l!KZR?vg-a=?e_uk)=GD(f$(Zn%M(JoS6U*z@>mc;Yrb2P3 zCVSOgtcQ}4vFxj_F6v+AlxmNj|IPR>b7i@V!&=RgV_tgsZUzotv=d0GvmZ;dkz;Ib zbH(@wI+`LzIt(|srunI|GOj3||5XUeC_<<`8f1R>8Z_ihWS$lODb3V!&p4kfC8-d0 zZM`Ge*|b8Nc3yLsVtp|AtitZffs__3X*StaCGJ|)pNpifXW_nIsWnU^<(`;q0Uq0< zV=H4!aNMoA;1(lMtvj#VuLN>gIK@b8M@e{dyPvLvKn`UD*Bcv6y}Tfn2HiY=Rs7c8R_zY1Z`BQ=nGzov&2!NuBx^(FWH# zU*3ED?bSUxo4~z)ihP$May03oK%g??20F!cUQUd8 zlli)y($!FF_XMgOB*f&ZV_#B%ZOjbjF1~1K(6>JI85NMh{|-$@gIo#qgZK1_-jX!p ztwNzFNt#6dq#N23%)$zTGB2%_kUGL%xwVRTB8d2?H3ME*0Z}?}d`+kBXVDjAGoL*E0*-h0_uO;x4V*&5Bx*r_8}8UJ=a;d0YUq3x<_V2I{*U*YR0U6zFc)4yk&mNJu;kqsM`!02?a{5ibyu&htM#midAh@1 zai(mSwm8dBMTc}Y#~*cnS2uMlgzmISe=hY@`da>drN92|*J7Tb(3Ow=9`QTQR>Wr8 z`}xoVoE`e?z2NW$mH^L(&S}uK0IvDAHreS9yNS@f{!x(+n` zw}U_D{w?n^YH01cZP+P`v$ET^Z4Tx>r|V4p;UN0fZt|O}jv&8XUrQ8h9^E%M4$^7I zYx*(6MeKrVneybmq?wn++#RWnx;r2rn`V5w2+fT<=*tW4@P0x@tF#)Q5jD4@Pc~Y^ zo;m3(Jm;#585A7ZzgGbIVG*F8new+9ramC;y7XmPYzJq&8}>jI+SgX}j?8E`o7$#^ zSP(Vg@_X1}qrUw;^7@}lu3)DXE=eHS}d=nnTVLpM_&b+PqWe`r` zDNDEK!&3y=n3EsTy_ReF79Yx%{TJRNr^e*G+B%Wbo}eIUqGrPDO7rp?S6_|(hd;OX z#`Cd}>v-*kmx_bpwTrFOE!A;<>%&M~datss3keI~HW2>tO$;C4v@kndH_n-8Vg7|P znUnrw=G7LV_vKW2)$dYYavE{!8AAz9 zSILPtqJIA936ACGQo5*Li~su#Hb(?)R8Bf$v8WJ=;Y}~+3^=9)vk&2TResD!gwJ?a z1i32&PP_9d`P@KnOVJl9_+5*-XNkNTQ_LBcNNnKq5?7KGU#~tUWy12M-vYdD1}}5j z*1a2>*9MimEl@4uI)s#L&+!=UvJEw=wQ2xGo&b@U$kX&GS zS7I+Z{DnA8Klta87(EWWX9e1eY}oAKi(itUb{pz`_4u>EkU#5|;P*V;$HGki$?U(6 zI;i!Sy0%hSQdh8J&n+^9PTtzYs8qE>j)Ga|RdsKu0BI_(k2@8)kUq9HK@A0B(8SAxOZ&*`Dm(IgqmO#L0xVOCjt%L(X~F*aSaYU*k{W}I#0d%!n^ z0c6kpUdn-Kq@2}f^vAY$J zUZu08g(=dHwcyj6Z>!LEmioWXK7*wG$bVeG(QB-(((~s!nLAnbNgZg2@fFRUX!jmJ zAATcOk`;s*_u|7NngCX~?5b{Yu!ZV%Do~7*oL>F(fncz8*+$U_ustZ#ZY;`!yc~Nq zk28AlCSFQ*U?}_+yR1VNjqL^~NT8`GFp1F|$f!3vEp&I|zi|MQlzzU4u+f>ytN zktXcn`oQ}&&7EGo^lj)_;2FBO>{#`3BdcY|EvuwGeBV*sA2BngEXZt#MMO!L0zW(?2j>QDOUO{b^|GrJ9Qb9nko z`zLl_fced7ti2t+xy=HtzS0YOEDa%JhW6^qko%a zAjWv3IGFWD4;LF}s_IuI!B2Utp9ZxR-wCO_q4wpt8T#&-0mI9Oz4bbY6$ZDl8`Ouq zf|mvA6(OyFve!cIvc|d0Wg2Q7=8=D=epNgV?)Y-}phoej7|JNs`5CB&>*f_u)raW8 zZ}Yx-u5(UU%hwv(RT4%{3Mzhzgk76YZsy(B*01`G?=khLUbQB2ejWH?(Ep_Hx90b8 z&?7yG*$H5aPH*M==?D4WxD_OB8C0i_cDxGg8GkqZYBg@?#upaXGNYfMYqTpy+!7xm z4mg+Stej=~&DCPRI&6tNa;ZW-{5QKKkoxkKyy4HPxTG*zQ-;LPi7yvN3M>3wqT{*s zIF3~;oSXO0Cl4Zuj))0?{_-KqgNyHXcRp1=9RH#E)Lk6Nr_?@@&QFOJ z-2)|uXQp_Kuf6mfs8s4IKPpX9813KsgI6fri+ff;XS=jP6F}ATE`icj*DjrYX2w*V zM-uZ3@AUKmIbua6D(+l^NcKi}CeL5z{pWn-z~eyum_e_$K@N1y zJW#+#)0wJF#K~)Liy~XRZ=d|F#P^WuYgGK_mrO(Zxi`{3stTFCF_jzI&-AaPyY|E~ zz1~eA__fbTeU_V$utN~Q&^?|}ud!;t#wux6yIzaEe&jyb_Ix?7W@W@!IOYrRhwM0Pop%2A0J3=k?A- zKQ)$yos-$$8tXxw``YN+b>3c;dsh=J$&mS&)!)_hXz5oa6>~40jEws?pC`}NVUp$U zd#{JYhf)uzg@eG8#yNDU+xqF-A4=EvQXYvnblvNZH-0gdKu_W8p+9(d($xMu;kmB(Xx{VvL)|WLt>3t7 zAk(^4*YCGTqQps8)aJEkAM5Kld4xquYvTQ28qX2W6r^r%H#;mTo<*bsg4nA)ej4ev zTzxS!RlN0dsrVJk6?R+fFVOapWCw}!c|h_PqM@^!Lb#-1U!Y<6VWG5>Biu3asv-M= z_fUz!?CY#w;ZcQ)`43jiqqPh8f;E?+g`Z|`Eh&J-SPp!n{N1K^59u*R6nX)D!*eV8 zLKB{@1@%aQJd^&==RW}j_YB||8LN!YWz=XkCl8F8xM+t>XI>*?@Ju;-b4;% z;LbgskM(l9bVK>=Q=&(OPzxlRCSv4K%5p7CV!$m&AjC{SnV}O>j(Atg%(j~2lt;&Q0qWtov zq)B!KCUg?6XOFZS{Sqyfw<}A-;fl}L`q_pV$)4Pm9-uFM{j7Pd))1P3=|9PQC7flO zpD_FjOj8zE?nr;Xx~AQRW$94MR<`GYqLi$4t1W-Fk)?IPcgeZLH9+ZQ6J z7hg_a8$q2 zNN;=D*~)y&M7D{>v@S1vli~^s_=ohl`SN;oGbea6_u%b%KDSg|^acesC*e0}(G3!s z+S!okKxo|SuCD~_MzFxfIv2nRHQvZHv~`KM2_}Vkvv)PZOcyBt69v3!ZM@NvvZ<4s9DXbF_3kBQMg=T&dzw1;}ry%+hIU76{ zA(yBdY;l!h53<@yX<)hpE^_(|JCKsvQ;)@pIY~DyTAT~`5al0GQ+O3gO6~}U%0b9p z_kkxRtRJuA>-+e-ELQW|+tqp--`+oMet0@`ev9SZlxp0L5#^=(Qg%|NgIztudiWwb z$O^hz+@QOpG!;%M^~c1Qm-$Hzait$vx+od?qwHIuia2$GnLGi&NmveU@qs}8gYaM> z^+Jkws8I+8ibGUM7t!iX$xq1kBkh22K*DxWdRo0dmG2$_Alx-H9C%vIY4}V44wY~W zS@hm;=D`ol9Sp4~l`y0`^TdEhp(bzn8Adr4F}sDKWvwXs3$!snFj1h5xpi~3)AWu0b-_tukN!}~-(}!n#jhNjT9$`NJkwKy(0e$viv3ZznuYW|d zr|plJYoe?3tUe`0HO0avVuSc`CG&+fn7oMJ`sd?X__g2Xe;Tx0jqrnTS&y^z!zRiw zIx}uMsgcqQpahPr05Dq;RAMczsuBC%U_Y%RLgqc`KJqZ_RwOF6JXjDz`B+Hs&l|CY zq`vDdI!L*zWnO-3TC2A|9%VAPSS z9{!~P?R*4KVS7=1Gy4q0jkpTQ&Z){dVmm*RV`|AUue5+#K(s!&Oo%SWUg7{X7{*M5 z08_Q=nS(tdqwWiSuJH2}KflS(D`>A*(MAdv?=*mTl4UL`4L4fyxOvt|yJ(8I*sJsw zFr}+d>h7wkk}q9swvTV zDAII9&n7gUPe8*myW~jOi43Ma;8W7d7PAC+mWHFmPT)3|{JJARms!!s?pK-5rjr@w zIKp|?j7XQ4d)XYONkHS{K4QR4<6%@&H>Mms;&x!n$V@fW%Q)DTG*+7w@rGwbElr5pKh3+9W zOqUvRf;^jLp<}Y?^gDJ=7DNouLkfujT}f%mXQ^=o%86SZIpjLU}Mz6>V4ISS8=7CdST9(@ZQ#}+)g z*-U9F1;YgG>q7R2k5&x?WoZe~aedLJc#Kv4-6A3ss6;^J6t5}9DSwQg&_1phT_bC& zPY@>Nq5-q>_Z3yC1`bfa7Z;GgsL#&Z}TfXf)8AJ?n9r{(OYbYYKwcm&qJVWP2wzR;UL zg-3rF^L<+WzFhrU{#b3cAr9-kRY-tPg7|XveZ899T+i$Q`TvfA^|YS*f-P6_<#!8t z(|WFzvAml7aX*vYL6CBLzZlDb2ur)b+waz{<~Q5f{d_&Uw#D6jmn`_p`L&h-+(eK8 zqp5q_NI7N?W7}+3c=y~a8U^SL-qo63+DkvqNNRPr_m#2 zyITF4&nzq2MJ{eI$FX!vUwLL2xX8y-XUP$;8!=A0+c-`Ft9`;E=ouGJlh@PcN)L%7Y)va3*-Gqp>RDKv~A^`Q1pKeQG5B5*|T6hi~WUs3ij z1`#M+dx4HCFHyCQBPcr`SppR9_>r-06odz40l+*OKZ(ysJg4boP#AQ&P#_}JRRm$O z)5F96su9w*Ef5o5x%IWk5gF)9raGt)cQB?#s}YJHj!~^;FeB$`?aj$%PqtYal^!b_&oX9dVsG0 zfShjtDAU~tgUb>`Bj0-7qrqHcIy24m=XyoPSU=|G?0zUHWAhx z>#V$!-yczUVX%B3;-Qrs8Y)DjWU%*dRpy)7%$(Uoo!Qi^3rvI17URs!n@JL;h+przzHVW|1M3By#$&izfvFJym3tWJDmt|F(AbdUPWaG;!xI>j z5VApv!FVq`pgnA}^&y;`1+mB69DVRJ^uf)~Tzk}b0?V{6R9-Aga2z*8$AL4VK{oM4 zw&Mz?D63Is>jaa^Q3luxP7321HR#s0&@w@ z@j)WnE?+#-Ca+HLqmx%Kr@7Sts4qYyPv|-(qn0bxsXN&DbsTG1&mZsqq$oJ%rVIRx z>LviP%SjmEDMIxQv(p)U{lDYwzFlMFvV61EHPmZV5U09YusHa>JCS$_xM>`BqMODqO?lLd=S= zAIg$*_pWo274~o$@9m2*jxWYJzL<{cMLP#Vnav%{*|B|50gYQgV$KF`6;Uf8>9nX! zHawK1=iVd3=wm0gf7_#* zI*~oCa3MtIM8@rdN%!+tq@0NExF?i7^Og$Ukb?nNXf2IaeulPscC(CcpYHE*P=d&E zas4|HmsFYJEFGT#;=2lCiu9Sthkk~Vz3?F3d(#Zvk;4#0-j!}0Ox$TP0J;(hgmp@_ zK!wiVDdfI|-!loACRMFU7NaBdN>H!Ov!ZuPuu6d&XV-+@ zt-C*Nh4wn-OKAE7SN=?vzO3}+&zwCuAa(!%6{;RU;(*QpUJ+D^wL5v z9*qCWTg<87;!{7^{QB+W=2wA)JT4x}A$zrq?c2bswtbHfN?$b~mVNshd`In+DePg# zh27-wOLV+~;n=_MLuV{_KwvbaOmR(3zf>%Nm0TtZ?K-(CsdJUkf~*USP}FFh$4BuR zX}(hqiy>VJ0u)bbo5OzL;Cu^?DUcJ2#s?jYrwoo{E-~9gq3B*ys$F0i@LypD*K*se zsVt3jBkC(oQJ*&Eg+vXpi#~!WoGRu7*sI{1G%(D<^zDUDrLs@xggXo;Fzd8>wbOT% zdlVG+XMkmShBl zzMfy3pb?FtPAp>Im>9r1J0{h$Hm!O;Qv02Bmp7Mq^jEFtTfVREo;LC7`~Skd2m*h! zl-S*R_4G(+JNte=CnVc3i@jege<$#`Ui_SGHF~+hkL$O=6;%^j5S4Zy~?02|)~ z%)bpt_{KVE)u^&gVw+Y4s#X02)(EFBHaMuqb?3+8?#Fzs@crtS1DC69yqW*|NnW~` z-ACVXpaOKPr>>{jx(xk>6L|n$t~T@Q^?Xaj#Mzq2$-;?Amb3di2j0(@*jS@4r|o-# z4o*SN2n%QSaP!ajdizK87i~o0BmkX##N0Tg6|s`5>}^aSlL_N=n0iEGs%MT-p{kG=%lR*+U3{NyG_gWRpwQFf4cLf> z$0$qUbcbHdQjQpk39l#0L<$|gUL??MsY|9?eN9r(#Q4-iV4H9*Q71HqAVd8itoC_o zlaq^=I7Db=Ie2^qm4)dDb!D;Ef=SyZ?^^f(XYofoY}&6AL>iitEteYX3UijPSC$B& zv3;rQ-?Fs&f;yP4e)up7>O5=puq=OLb~q^3xa0`AkmJofzMLG~69>!d;9g*Sz9r=X z1)>xAz~Pts9%+XwSk~6Py6#ah?B$%si(Ly%*-`gG4skDmlULow=ux;zb$o7U$pjE> zo|b<;MvI?+MmNh%^v6H{@ecuJ0Iz>+qU)QDY^7}Z(ys_mHcTyD2D65XG>mcF7uMF~ z5@+%zb4cnlBB>AZ64qG-d&twlnxpX%ZETIKVQz*-rN!Gbk-V4TU-nMJt)mDA<2s2% zMg3*v14`+-0LohlVB5;SYG*J1mlpXidl9N$vh&RVn5T*b4#s4FYHaN6a}cAdbZbNc z=1^EO44x(kcMez^Nv`YXBDb}lOosF+oYy8~EF=Bt?guTTu?>0G4;|Gd~x_HUjt-X&5P; zT5F;aAycz+zxlh$&YD(sbqr1e4|M zcJ;Kpv8V}pJ-hy4xao`20$}{&RLWTP!udK{e4V+yIRi|cgy9*JuF`i z-L!jBO5y54z5%LOmv9Z1X5&-NA0D?_zt^%{%kqou-dbNG74_%xTHoh#a2gwnzxuwo z(-vRb7WbVbo;{c6CI#pJOeQ8@|w zMI^%%Cyzz4@&>$C9`ag_kph`38bb11xe8?)K+1IGjtk4(Y*e;#JB6!gDfV?84nOD)J1hom8N+vh_`y)##*xSQ z)?V2=N28QemBKXnFyXL7!N-~Muy49xc5c|%E6`I9*9U*fD~1?U}6 zskj|=X4{jF&UBzbpe#BdL{O+zRI7!_^ea(#_c=I3%4DuW!=nzNGW10&2m!n+@)nb5#p{qCBfIyKSufnBN^nNBqjN=Kat;0vot zDpQ{7`jvF%G?1p~b}9lAS89zbK5@jQ9122jm%KadRCEwstENf4fk#z&`c0apgnSN% z<%bSua=Wt>r9R?BvK~#e6g-}DP9rn^a2|=PeYa=VUEadk>GBrdPM5cE^0T~!ztiO{ z9G)(3;qi2NyAhs69=VF06J0!S&ZA?KEUBlL%6W3B)a6U1E?+A1>r$DmhC`^!^F%=O z3{!c}FqLxzQ#nU4m2(7xD-POPri~Uy2T>S8<~t6c`Z@ySHd#cZF^bF_)#iL@3-Z_a`1%u3&KDu*GVO_#;4IZNKptH!2?c<7WOd$Zm>lwaZ!Vn+ZnG zmJYimukD}PJYIWjy}BLW{eXSQm{7I?vh}!MEyIT$-*1GQe?P6p;?n+g%v-i#+Yyy5 zgxSRgxy8Cs7?a3uV)grCk_JxGJT4`Yjnn=3aqxOSU#mBQARp|pJpR8=zt6v~{($ow zn8L9mXs3zQ?{#Nr#F33={i>t-tJdmQ9oJuVV1Lz-{gu9pC8SqljDoLr4HE|kw)bD@ z2TOjNoNBBQ`r@H0c08n&UWL*5H8Mw{@T;x>CycLrM?^y^4iJ4V(n0RNjiWhmkVgD9 zO*KMhPM-)w4xn8Qqw*-(L$pA5WnX0_lj#Bb5y)|Z?7$t%gJUwB?2IHWLr;yAlh?CA zUF6OL(VLxrO1>9@!>MYs~?7_*xE_cgAR^(L z;gh*SilRAQF~|MU4RI|1J~DW@?GIF+h(KjPUHr%H{ZGt~wonU4f2GQ6h?BS{aA(t! zz0>ab=dgWJABB;fnU|-?7=UpgkoQNZi5jlP>I!MO38XQbQ2eq9_SloHRa9>KZ583 zJ%GxBS=5f6WF;<3C{K<_0oX$-4qGLvr9%q#ys$i0hfM^XYb;tW^MN z9nbK%@G=zpLf$7BJ)(Kb=a>#ERzK%D^!(fN&e7dq9tY3`%7>_|G{-wCAr+$f$XB}_ zCeV`*HVF6K@i*lyZZ{9{%~FH42EPpZrO9kAxZTWPG&3i#=I<|se<|;$E?-7aJ1B|5 z-j_*nlJ)(aPN&+smTzCl617+^whG~sakUVUr==p{1L*v=l2m%?+O|2YP}}109vL`w z;a(&9x!kU2%S~(|N{8aa>5a$i5{G~ScPs1FpF**WY~W?P7)O@(dg&H@W?{U>!m4Tr zN7Mi?q_d$hKaQz3QI?ucOg7Gg^jPWW8Mi00^8qdC3Z>wHMM@cRzboDJ>>7V;#|v~^ z0HlGr)?JO)OW*{3-ov3vqBFxG?fk-_H~JFTK7--9^itHEDY-S(AR z8{JvR)B&ZF#!!+~@45Vp#TxTbOF(XSlrs(z^1}k0bzfA{-UphhrI&>BgzyCdGbZy< z8ewuX&b9OHoiJ~Hc2|74njjC5=1<>5n>jU|=wQau!nwv@XKVxo)7uvJwoUDw$4UUt zd2Vis5MNi7niE8K^X(syF^_e0K~Vz)p@j`eGF zvs!MUg;?IrBN;Kme;UWhV^5Bxw&hAfCd!iWjS4CMW{iz-g2v^LFWLM_=38f3e*+Nq zEMO1zs&(4a_nrj0Ipauy>EcfJXD?>YL6XdAncWVD1ogi6SUR+}XB1>VNw~jEhz4Z3 z9loQ?_nOQj=!#e+7kBZUu?U7fK21;=C?R??zn^1oFj8o7S*aD`zBr8H4?A>_%0w1K zJBPd4qEE}~AM@+qWiq^bnyqgnguCCT4g8d9I-3^=OS^`kETavtN`ZULlp+%CV=Bv{ z@t#9yHU@;|AeIUbd$?$FN_qu8XGKT-n!s;wmLYtzNj2l1oITwA(jVd;61EZM+5-Ty z0X^>l=H)X2oUxkwhkaU1Q!eefQfn=J6HG&^9(Mx)VcbA zf07Y837%@TO1B7}Lfb3bwpacSyqdDC0;I>H%m|qQttXoK9B>)9baCvS#PZmw6EdM6 zYxsbB);s|`!)v63>Izo?O%!WI@OsH}F}iUqVo8Hra)d_x|G6XL?*(&D#XYZ+iCi_R zx5Is>#}v-=H*57PMM-PvRKnA-^6B1E03C}Ysi}d2g(g$qkN_;dUFsX1l?s4oB-jmd z^+pbOOy?RzQ<&1iA{tAg4k7KUw8-wm2#jAwjGx!#&RbtY5iE2DP9oOm7e|ocvq+7W zQs{b?1^{zuV#5s+hBoEF$FzPm0OX=}p&mbCZ^$Wa7ETsUT zHi;I7PXMaqhnWYjbq}2AlAniRvDYLcCac-(`rg)VG7xO_gYoPKJGUd#uw6B4axe&5 zObQkX!6q`WQ3MuBz$OB)iTo=Re@&!cQ{mS{_B9cGg_5s{;474S0bV@@LZ(k7UzdWf ziQH=<_L@q)fc;XJQ6_BAiXD-VkFv=76Sr;J5?3Rm3~7-t$o_5}wwJQQY7ML~^_wG@ zh9FKL0P==R%6qAaQCs)0XGt_BP0o2@YISo#)WuHf;WQ6C(1Cl%c?Vl23_+h8M!jcL z_pi82m&~C`ZiMif#3qDs=q^7%*Jqf`IEM9g?^Yf8)pZ9D6{e>$_7kNQ!k_#WF>(~T}ijEfAG*-efx31@fFP$>5G+ZKs*pY!naL}L~pMt@*dHq#>l#g4O zTIjsM6C_Ir17uyeG#gWz=sLN)fA}rFTf@J^jUwh9CV*wA;LOTKX*|Djkw7xIo@0_& ztbD}m<{q+CAUZSwaa_f>KNQokOh_FB_<{ukgl_ePthY`A3WN;Y0ygE)ebq7J51C?1 zsUoGUGz%^OIz8Tmu>kc%cxgVB0brdV!P4D~=^CD*g#{LW)E*(BPG1H>T1BP=N-#es z!yB9eW_sGw-jnEd(ttC8ygD~Zktd=PZ%u}`JKS;zw^?Y{s5>z@`rl&~4MyBsIJm@n z2VfJJLUTD8xv#b*w~!p}Yhqld%00`DD6HXx=lU|vLluK8C`%v``}fUU;T}iv2#77J2k%< z!UYz; z?RNFxN&1Y#u4g}`OKnE{$85Qr-*2MeMb<(5my=U)uC>&JD%JaQU9EIz=nT4P{CHL& z^NMO5!~#N9POk5mqFY<&j}J${NpAs6X)tK$Pmt4 zU5M$`RZ=w7qiG&ABU5dhX}C8=$~U(o_t<(~v2_bk8!(LE zpoOy@Rg^N5KoZHL2SsXfxAC?XVXpmhBfal-14rTh>2P*X-6b2KF&=@+x6Rx;idC7` zC*1Pbs=R-WE~x!Hc`-{u-ef1V;FSTM254JVw{RigX_~PLO4a3x-rF&GkDHXZEyjQu z#k4BPe(+so$Y`NAI19bOS?CEcVD=l-{Lc4=QTR`ZuU(V3r-E8I4&8Qk#}aPkkELBJ zWhB;?RfvT6J3Z0~LVfuk>jTgDqpPvF=iK5>;#hSo8On!oS90F+%LR zqdtLq#gP&BgUK%9b2XqE-uyM}9c0D=xe%Ydn^a(cIrW+@czd%D%il14bQV&ggqx!a z*x<#crV>cGR+W&urQIFZ^K3w3b?-^siDZe*!&oY+ldcpnh->Q;0Wh=st^-@qjfQTW zH*^b)GCZT!y%v3Xw8=Olzl}pT&NH_6kS!ULGwIBZuTx!Rr{;T|neTPZ8n5%#cz94( z`~=^_pi8(yaSLS&za-P`k_7rm0Q$;@?oywUk88ksd6?b&q*MI(D17~h!8Q^%gC*J7 zF8ZkS=AZ=jd@s7 zyl05zAjU7@gmxQh` z0`3dAv{zeNVVohl8O)+~FpFBnQ^$C!sjFUS;SWT(!w|Y9aHcs>PjS=Envz=8!NUQ@ zz*m}Qvf9|O-?&PGrcv$aX#{;pnpD*paLlD`ZxT7I`{V?K5l|N?&yFRqdF1MYhMB9I zNt*X+86pKxg)qTg02+5sSowH@#>zt#;|j0YMf;KWMIR420N3+I=>mkYdV|7VgG7Vg z_6`~(8WhzTrb%h=e84LO-J6?Whk&W>WPje-u?_&-mIF{VlK_5?4#adr++jgoB*3U* z?0CmdexTuaCVb&gp+(eDGJoOdj=AZco6xh&;IIb7MRzpihVrqfQrHRNC2(;Dyncg^dV{My ziyK`pToPiH&BIM1VTC1|__mx|`POiyoN<)%&m zS?a}Md8eCja_@vx9;dY#JHt>`t#lebBug&CtQ-n2h$3R@DS)zjGqLOdgEcrv)zcpV z0opO5(%XYb!4L!K;R#puYGMkILNgX8ko2>Tipp5(1LQYq7ZmG4<*gNzfAMCIitgT} zW0Ngay;*^iyg0Zo&B;T*`x@Tqy0V6ngJz&9kB&f!AZsVnO!fveqzU*knvvKNcrZT8 z?@?KD4lUCta7h4@-DumoIcIh=F=hJdoa1B%J3QX>=oM5qcSBs%-Cqc?9wMLz%7I>c z)GhX4>zDxj@L_+g9mM&nRexWjQy%G>G|4daiWC69o&B6OJr~Fy zR>(M)b5d2_0A0PW?VN({)fD8Z`h7t62#*fh#d>ySp1(WKC6ZRx124{o*Y-&mcszus zn}o*qY=1PeG2vem9~CHz9ff6$enbRWA{1i?&BYCIgnmT_0S9+ns7kstV@@jF%(E}L z0Wy6bmxIU@%kE}Ks^0zekPtF=DlYHTk)LhwxKsAgs zM)ZQD3%RoO$6)ELpLwZIb4k}NwI08Ckhxpd0|~~{7YYmuPFDyN6q6>-=m+4Jzn# z+?&_y_#I^vy51Va>gu7E&TI)~)@!m-CVrdi1!5-!)OlJ*Ci}+H?>Wl_-N@}yV$W^H zquDe|G;U{uU9qDEDXsz~m3_;!_+G!IDWy)-jAHE8V}sFzdxA;h_+*aN;eKFDm75HopJ4R9;3>|z zeEjpb&xqe-dd#uF#!^YjZAyK8!OxYCqPw(xX1>7#n0`=YB!*|Y%`vJSM>!=BZla&V zL*xk^yV$pJ(Tx_u25KlzXF@08*yiE|-1l#2*dKAR@{@mlhWmcF*Ub!u9 ze?}tG$lM`aidT-oJ0l9pWac+k7b`wv(PPfSF8TYgq-;jCt7=DrE6xy)P-X{Lh}7!M z1t7f}k1=+W5A*UB5}$G?>ntNO4}kK@p2PjYvXYWGsa0QRLFx2PIH0~F!m^K_r%%PM zs4)@=kPhTH2=G=eXmB5-yL&H{vYtL4BIi?EV9O(n=EU@U@rauZX7_h`+qx?6KB3PT zF=l{H8Jo*b^^R{|HN8)7gLtl)Ad2Lpk%?g!Akt0nDj@jRhA&k`o*j9&JN}#pV7(|x zXK|i+mT_a=g2rdC=hRgW+F5A)!1U5tO(mQe97VN7-m7y7T%HDxc_#zfJRMq|)pg!4 zj_UlVhc~>m94J!MP&S>ybmC5A0J3d4$R04(Tk+JbgY+_q=9!6-%k5!T$-iWGHAKTz zFHtz<+*_|W@>(0RXmNv5?{yNPDBYpGzq8J`Aaf`NUd;&b93lZu6hoj)YpHYx5wXPa zfP1>bmO+AqmtUTLJAX5Ozu)BlH{74O*OTMunf`vmoClp3w|cdPgb%aL@0_kECXYvd zr+NS#JfVTRCRKO993H0c2EbJ#Jmrv%9$_z5e}fzBDT%;Nb7Ve35I2&zINhKOeX1>qhXK z`4pG05ti|0wzd2O=e;v?oP9-p!nZn0Dim$~lhK<;E!kpYNAnQp9RULS{&YJYh(!%( zp?Dj@Sbf^Ns>ZbfAXX^=SR%kXgzP?4!?E{A7)>|H;STj_6NS!WLeDYiw>m0b2I&Mm zmg8t}43gO_Lj7TY%8o^C%|?>-oPaX!Vm={W1w{2*91`Ffp3Xr$EzBblPI4!ox6e&5 zA7E-pIidK%PN?v8pf^2s7cnXtyhxp8pS)}6v;-cAgJ;=W8TODYUCfNNau1`ZRode~QB=E>wSCSF z?M{~%ZjZEpI`+D3Gk>Iqv|rtBTrJy)P1gEa?X&chT!E<>;fmARQoS4Z~aY0DnIr z&YLGk+zsb|GLB~u!Du_c%U3*M9IL=o#NyE|nMV834&-t$uyD~`G92>g8v809%3jw) zpIhU!G(S_UnW9%y^y?J;&7n(~{(jVrL#JMQ2cN>tXgu~AfMdfcI+>%Dbcs(}S834Gm+?#8 z1!Ef6IOv6UeN{Sy{xFr-tExz7+q_g)aG4jrWTk5Tq+8>5Pj^ago3#OW|s(sZ0Fb(+%z>y>9#PJ8kAE#6$OR6231?hQs7Brcb< z&C~bge0xcq-N=6LL(;`|eo4E#Uws#XaOrBf#A_U-XLOVV^5z`6l;h<%0(BnBm{y4+ zm1Mvs>L)~_3>-6}jT`P};QJ+{ z9kG|5;7%@rB*pLTQqAAv5Eqy__7^|tY8KN?cUvbXwA0CRz*9IXvU5Cv-w19f?oZj)+zX>zgC1?1P zf)Ks0=~@b^?PrAYyxpn-EPpF{#=@*rLOu@5^$H#r8}nU$Xk}BCMb9z?s4uwZv`J~v zppbL3tyoj=9Ij55&w4eCi-7V6AnrzT>0uxItl2#~NBGZ7&G6WA3n42oZ3Ib}-WR6o1QOlGV{jr|k(Nq%vuC0a^67a+7W^oG<4=y)_G|pUI2!ty52j?na z@c*gMTT4rZenbd$ecrg|(!5Do*RNdlUwMnY1Y`iE2{CEDHg*>IwUNXpH7h*XsrFN+ zCl&$p^xmiT8Tm-2C)Kj$JwlL#?@Qh_g`k3gkgz_gFsTO(g$eC&gJ5@PQyAaEkuGMU zbK1Sin!uoY#|7{;JULuTZL-L zTobhibkS_AAyl=CV#rzru*W!%@I{``-V2%Y!GZW%fReS|p2|$RGS96bZ@o(`p)4U% zeNq+nw4PVexDb|);-;P-_?i#anAS!tpOy;FFx6&j#L&{fXk$UhuGwVfK8LE7!D$0h zzigMNeE=WUj?J2G>(tW0KLak3{7bVPzeNfxSwF{61~Fytyp9-#X6&?-Sd?U>@GVgv zF7CLm#t!!jq$?I(fkttRg%1ajdvzfUy_GClJPjrY-Q1yh1x8!q?lO61i0nBRj|`#~ z;(1)+msIciy4F<;Jd6p0E_`&~Wv&u>bNSHQ*Z@xd-|AI-Fh5SJMo87xI>Q9o&=GCj zyklyNlYNH6o%pHv3xB@6YZU?z^q7~3vmSfG&=h6~32$&vCCc|?{FsabJQluSL^$|I zl;7{Mq|>KS9g{5fIHg(iFEXy&x2i8#+`Fs4@(I%W>@p+Fa%i&s9=3;p=A1GBEInZ^%7h0P<)nR)H=iP)=TP!wF*F~+sJ zS{XfVhU{Y<VLjf`~egSHR_uoe=?8p#cI*)vpNO0-9^1G%9kxSs)}`2?;of3ijYgUCwC^vrka zDInaH*TdC0>g_-B&8+oaRuQ}?se0E)8Dv4M@ys=?%?4*zEpAG&ZtGC(CWaN5gtK9! zaF#H*3Xu-3#G`OBB5I5k2dnEBIvI7iY!CYvN!)P#fvMRiL}O^_$k5HiWo#FRdz>m= z?S78uqwU_aof>&o19%_74b`}b0xx_kkY!+z3Y=$_agI=dK^!r zANN*sWArq!7HjWIvv+0K7h`q>_q!KQ1!cV;x;H4>b9{CePwSVDC@;T!whJo2AX&?m z)^HUZ&C%0D-jBA;MEp&m#H3pndw2IaQC#Qf;6{+Vg3vGXw9-rgG_&J7%?00jkK0*m zqLOwJT~uT<2y-{wTL~epk-?gjWVdk0)5tPxiYz2L3xLboW3G0lD(^GZ9TRf(kh$?g z7|(YK`dai4vVDBFVNomv88wv;8Eii24bx!adya zPDsGu2F+m=k~dkHCOL)}ZsN53hssCn-J{Ab-~$F7niXx83WQQ{1cm-ekr7IH5lCSX zpriDbDQ0;F(ZdOz$i^22y+m<4;OEdjS~TBAb>;b6sE#u!juD-9%uv&h8TPn; zyH}Z0kcq0y9J;?CjG8bbm@dra=tlNPQFB9&tBP!z+xliP(jLqb&f&juT-G=JOd9wz z#DF%HpbkqlSi|)c>dLQ(Iex)xxFn|4kxq17R~2i>>JIC8US%&4Hy7!dK=&#eIS?#7 zbvS~skJSo^FDwh(o%wde5)PP(3caDoVX{}D$6HH^DQ=octPUk<=}AY|^YzbYIfsFE z{Qb`nf-O%N^X)R~o6qN)^F;uCi29V2sRkP{p$BohcXt!7cRV?Xz#%Byd)(<2-~M)B zSenv0N6+Vm=r;aN->p*`-0n^(w->2sxa#i*8|jNBd<+DH>(z2OzuqoZ%h;|+3lr;= zH?#HK)5Cl@eP?X9qfN5fY}d2JavT3#tnO*4G{%~1;z<^2_CBSp=bP2j8rJnAdAzaB zIg1+OaJSlgd7~Ej;X`^+z-N_UF{Ah6F-nTV*L?Dndl8J>SIhhG%heNUn2)>l&8b1c zN;PLGzWs5WA#1|%GvqcA3b5vtm2Q^ughz;vI7hi>k;y&mCwyANnKXQZOaih~JHe?w zp;%ypczWHWUObBZ$A9`Ha72PeXGpK{v@mtm||0!P{s`V#Zc5u{6ff08ug4J z;ZoiW;#AU2%2dY9YZ-$~l-1bV4dBJz*##G>7X#p~SqFR^K};?Tol$Wi8|NY8_8v&l zBJ+zoX3y%PY>S#JS|7?5x+OQ%Xm%$@cCxr{FVEs!<^j9xN{rxKUTTlF2g^t z%$W$KBn-zy>b25_@()3FH7gth@$eLMjwd zyrC4$sZ^RYsA!@j3QZCkq)-V_2qA)eV*%nsggrsR>H5_ zhq!H%4o@i~Oo7k5!L- zC7qkmU8H~ei^BR5x%-qWW(GJ}yqGUzBOEfpdDq@qBM(Mwe$JlsT}4$?W%{KT$$Bfk z-+Au+Vz1VlbIU(o`EqJP&IJeUJuiHpq!~Nv+<9(%%vf*LCi|$)ZzF%wbX`oM*T3rz z_s>YB`_j5%=hI&7(psbEH%w^N*=w(#-K7tY?W#YPbK&}w(CZ&l75ygHsc&o>d1qT_ z)2Gq7I#b3jJw7tZ`EdBAOC5Q!5>5t#91GtO+_WP<>f;r)oJ=csB$pV{aO_=$ts<=%L@9KFCQ`|IBes^=};^4bqO1ha6Tn&Xz<78L++p7C% zJ^m?|?WS_o+@?2A<@&nm2i=_Nk+A0&b6Vq!>uoM=mL7J~a@wvp>a>>Bp8J^VzGv`^ zyk^*?RZ-*0FR@Cw2@?+F+~|?Nw;;A6ufW&&_5$%Q{+YhE1&8ZhW)8nsHFo;u?$?uc zamQNfe0cIcqB_z{?UkYIup8DV7u7w=YL(6Vp#L?q!6w?jz38at;KLCGDdOf1PaC&L z)wc*IcP2aQT=-yGF=zeS)?$AHD;@Jv)SLP$OZMtVuPvJXZyueK+`C_2_+!q&Q)2n2 zZK8H2rhAT>xLxT+$G%KazqEX-1ut%-KJQaq_ZQZL zmiR=RYpuH^duKgYYtO7#Jz)hcUV|C~lV|G>54m&rTv7GunvY+Xj*m^XoY~UtU;WJC zu9=)0>y)5_;vv&SW_1d+Z&j>6dFJ(yo8%#7n2?6*78< z938*kUFmdPVZv%*~5UjNsZa2f4Aby#!y!gkIjORY=V z*Jqs{vZ@QK?l%dycs4xkSJj8-#^V$ot2?%N2dyx=b>c+LtOZ*Xe#Woy8M%CHtoppg z)kz5%3!9^Cb`F`Um}Gh_iOkQ8SNkMPKe@0cb(UmH^;{RnbCR$npx=7VCD`A+mnp7(Oz z)kr*x4lzFRykuw9;I0coGJ80~)`x$K8S_4ByUfzod~2TzTBU`B6F*-0q&`gR?7*89 zD{@?I*L(V%^PHa1cva9K#ORam)5L`eEi=9<>xBn-wj3=h`95lJ%=H$z#Kfp`4QJ;%vz!`a1_pZN z$Fdx4gC?%~))#0Zx`1=UR7F z*ul2hwbk?F@$g5lwlCS7k|>&%x7xhB@Tkh6fe-69*VGPH&pjC4v)b)^O@HFx&k?mz zV_pv5_vp$Y_Z!MVcPC!3s(yJ*Y^T@L^KmLD@yg-5K2GyKKlZa*JzV5&!Tt1C2AukO zLs>b8Xg@OxgF6|oK6J)*Sl(a^dm{eg;)`g_+UIv?H5&U_YR}mwf8?%N*yry`gPSi0 zG~GOrCjV(<^TIhJGCj-QPmq2j>AuBB$1o$m<9ux-$JBMo&&F$#ug!DrWajQTecvGL z?cx>T7px?1KbfFq_{m13MAW=@F#Ni@IcMjmW4G?@*d#UQZHAPJLtNE-*4@MJpS*mX zJ>;vdrFvxZ9+~@xOw+RpirhxclQDdn!5MG%W_RI{;b-Sg9~t{uWAsJ6m&FIm>vY%d z*{9#LR-`?fn)jG_udW{bg*R z(mih11^Je)lx)ovC)i@zM#BP;f~OD_IrbU{wnrkw;$Ow zE+b^)lyAYG&pb1Azdz+@$%gcop8gB`YE&Oq4VLc-s<_ei?q1ENCDqZ@2J9-~s9Eo0 zZ{43ZIx?iM_*lEAS)S!o#ufLLrm(#--c4(khg+D5PI_{>Vx?=v)!v>VgG*L9!5^F= zug$c|4($~`w+q-OU+E&fm zX>QT=(JIa9PQ{4k{Y$DpPhTfJNn6LksXJeBiTcblw(l=*d@cvNo~XPtfJp74wu<#lY!J7bayXdk4m zE);!`6Q{O#f^wJWcDZ5p?Oo~HpQ)p471bEE>4mhixf;tEbmPMD)8;6bPdPgBP}BQ_ zBR@>KZdITWZfZ*P7DA40mie;6|MQ+N ziw7bu-x;c3JSZ`s=CD0*+Pw!Be~pHJd>g7y-tuLfsO@o)n!GQUje9nK7#L;cHe#Bk z${qEhplP48H_HaLi_KyrKieA^EmyTX;8>i!bLROC6Xt)q^iyQ#wxY!^N97L8*Y@>@ zQSp%$e%wFY_uGJeyy*10H*&uM^}n6(>`3k1ba3Fzx1G8{8fo8c9G$9$lI2n}Ya^78 zzIFulFRs=KNWC3( zHu>UY88wB;t%-g8U!J_*TKhPuJTiFO>bk6=e1FyChWMh3p?CK_eNed3?6kJ?ue^YX>Z}a)~sk z_~0F?utGg$&ZJRGG-hrye)DMO$EKYh@7ygoKkjVzle^EWSV^1DE3#U3giFsK6xyNq zK700{0;*Rv^?p93QTOLYt5Cd#UlreH{9@^u;cXU&F_mRxiG?d}hO5 zT?OGdo9g-7*7lqDi|qWeOsnJO7&X_pz;)&ZZpWLZ?OClQad>`3RG&xWl`d4B6I!c1X<+rlV?RTCc5^Pu+}%tSzcXodOjh=x6945 zjptZ?p7+8g^7hX#%`;~7?xyflbM`E3zELwf`bv3%f$qtZ`Dc+0S{!z3!gM{u%9382 z8`q-lwk_CleD;8;TXnY6h_QtuzTTDb*Aji}GAJ}mr(k*Sc*Ct7)8p#TIhmI1jS@4Q zm|XVy*J`xkqh|WUS=!Yz&i$2`XS;XUIuj27)}_gtzy@BSRoj>{XyZC*Wm>Wmqjt{2&JO|?cJX#X-U%e2O4Tv=_!uCBTx z_coe$I>$`ByEU_5L9&bJG%q)ua{B?NiN`u;o@;Yn5Lh_3W#Cib8AjLj?l#TGlWs5U zmAc(u{iV%z(#(Y9(S~|Tr_$2fqSuIs6-_$$Ir!^M{jI5+=0#O0lm}%FI;0qTJsy9_ zepa~CoQ_sqg*#S43axXuUUnUKe_K^o`hu+Q3tCe+pDtS@Y&ZUBv(B$v+*o{ z#@cHUp>B`&{Yq+nGt?f?ZxeNYzd`mdmBsg?I^6o#M_5J$>NwO+Ur|JxHV0+-W`UG}1W5%1apGs2a{~+?U5}w(oA8Epy}1#?W2r#<7nn`>AQrJy9xhvNF^0)DBQChRRX~oM#l-5u35H=c-Y;`Q#rQ-USGzan4?tpr? zz4sRc&p66_B{lkvT$@bq9olO->%xVT&Ky@`EZ%O;X&RmpdMx+s(c#15!nSGsB|dG| z#^KF_iJ31We{PrZNT01fJi&9y+(8SDs(8S-AZwlI7^|z={dspT(juMupT2yl@NArQ zokGH}_Qum68eK*VybsGVusf$y=k}}M=Kj?i78;z7+IqI4;D_d%HU3I^cZ^#5L=wl| zyLjBkVOV}c*0}P_q-KlDV|?oxq$`B9bN4rRkM<9{dj0OCrD9UYzpm7J(eR}0$*NJ^ zb#L|0y?$xv*7R=n@OG6T*+#p=uZrK?sCh?T<$X9YQ*og( z?cpwQ%V(-psY2B{Nwywfn0>$MhB!9oju+_pHh)RsX4HM5VhM zI*!$<%-nY1_)4)suOSDqh_S2g+uhTzyW-gEqtsH|E@UUQXujJ@Maf%gzFFRGx3?C4 z-)*LJ6m6HxT9o416fDtq@T|s@gJ(4%g?uo=-uN4M!qn&Nw14l$jn!DkBWSqql6gq--t|BkYvucXV=<) zjXQFtm+A4#!6+i%Dofrk_840`@0jPECd(NEV){Xvh&mtr~edivfEVH*;Ws>c_?!4~l5~{AW zb5HW(?ZH>+)BJOkyhi2j$yUmLRq6CsmQ9+cSD()_;|KRErc7PuvY*aX*@GF)n=WD*BYd5iN-fUwZG1SMHC+J0r4&26k9|-LN>cH%Uc$u%W(S z>FTF>M%6~)ZX3QgJoMJQ>Z9%c^MbaX$<)rm;05}@n`gI&UAWCP-*fwx-`eqEwnu7 z?32ug-<2ZYJI8ff%FS%sU(`P63nMxvFSK2E zTQ2KP@s$0CC%j&8W2fKOrDqD)7Z&D>*Kl9#H|f=Q<5j=BQrcEO|6w=E*Ji!R zw{Oj^v+A+uglk8c`AEr_JPa<^TQgTnbI5yGRg9yb*oonzS=>5@!upxZ&nKNLHfS+( ze&4p-;I-?DTR&6xc&$=hvVG>d`irlHW6J2)jZVAN(YC#~xFu#0{cg}5<~}<`=_z_O z1J#8~KXx2Z7O8B#qpsBI2s0ZVdw0XZC-J6B({APjPwd!#tpA?l zRi&lHtE8e&Y00$cgs)qtu;<2)ZQ8A-hc?M;?--`Vd~)?>!-h*QXRH_6tNuY+d-32{ z`{6Sz)rOyUu03QEUt{1tVf4vgeo>J&$DDeif_}d2AJ;zp!o*`K0`nmo1@cq}@=Pw7}2jw@O7_q3`b*p`UtAfpe@_5#;to)3%>Zccny-bN{ zz22_t-FW)Rrl?OYTYZ`|o?ftwamaG39QAg>Wl7Zo${ym=60P=BNvl8kGDUy4e!-ls z-E*I%E-J3dw*P*8AjxiX?(?s^&wAQ?{mk9{{p6DDLE}}|gy{tVRV_Q5SB>fFpKFLhAj$CDE|^XB=;&i7bZuP;o$ zQ_ak*NUx2Yc5CL?-lk7wcFvy^OK!98w+**Bclp7Ri-jq|dWjDkn#M;r&8OvyKc1#P zVb2rc>d}6wyN0`taGyBk<5ku2S2q@V*%hxiW9GX3Yrmd>TxL?kN%I%M)k)qG`F=l} zK9#f_QmQ-D`oaC1*}+0xpDXmE+t>N>-If( zY`%@t`}dDFs&>p<(K{($O>D9WtIRMhN;?(V~x9du=#%ZO2+W2P|o$O zVTq{))sIE*U4C<-_2Y!#UI)3|^Cwiz?kSpk>CmnE40$xBU-WFRm1M%BRQGP(tuG(t zPE9(<*x|4{r(Nc46=RZZ)p`TnixwDA8$PWzV>=!xz>_{bGh?v)K?weerk-5 zF54t#rmBtEecQQaZ>2>?MIR~9a+P=~N7s`sc6+?^hOM4><*OyJFV2;{;{@7nSWRQh zkm^c{Us#?P>CN_5d{xJcoTr$#Bk556HeazzsC9?W439^OIy30+dZm-C9PS-S+csfd zZ1(t@^-oN5t3$g>d<`GfmVU^dWC7i8Lzi>2QvujI2wp@Gavc2K4$4aC!kH@zp z7092^P;cGUV{QLFGbLqHy_e3_0`<78 xH?X!Nlna{-Wk>%{#R(T(&YTdLASS^c09k; zIw#8Wz)*49i1B^zMFutF&PN@Xv{LhJ^S+>KC_2w$sqoS2!uGdEZ+Pxfjyo2qr?bwX zHFNV0WZ$vyMwvIVRWU=EMy4q;PCMs`?7R0yj}fS-Up{~B=-U-4F3%F*re3zoTEB9^ zIWJ$gbgx@$B5wJgEe_j!xo^w(M=CGpZggMjbfVcdR>N}Faor!QX1|a9D@*bF$}|zH zXC9wJthA^7NO)$fP&jn0>z!W9b-(y&!mHVfdfy0bRmhwS_Vu%GvI>@n1+5t9 znOXl-OM0fe$9#VUy_C*<2Q+kU$caNv@GzD3(0`Q8#F+WUKb?Dx@=GP@8onAomaC*Z z`QjMuG+(PRIc^i9=yadD)$uK((6S;qllWJwHy%1NUhkaQA+~k+y>;hy8aT%UORalt zyx^02YN>{e)U>w2C#%MU^h!)mzivFMzCCN{(jPB=-5eI`_<{cQPWXzIPqxSI{`B)( z(dV#lKi=MdJ2$2;|Gk~lfz3wQ%F4=?>lRk0o|?-DI6Cp@3WH;%YhH*9E2&()+`=a$ zBdd1%=)$pjYwobG|Mhz9DX)boXLosJYK<>z1A0XCUdnNMi2K*v#^TMN`&J zSmSJFYF#`$SM7QKhc(}N%zu2kZ^ZC7y~L;q4f}q<_ti*Ac!uVT+7Ytu%(zgW?AZ_f zrwzS+xZs(#L0H$vf+q^eEv^|)f_CZJtlc=Gw8flRR=RM&fBvZ~%lJj{ci_Jg6DFOR zvi918O*5};PgxN3Zv1qi2Coe>C6fKEBh}TOXM3g&X-SG~Lswm6vS-VUXVvAM)79+f z#06;i1n5+1^a=;uwX~6#-CtO=NY%M_`Ok{KHuOiYiQSfHaM3iP^o^SIjP@C~pUfY3 za?bJRc3rE_Rc}uVKBO#V9o3!hs^j@uYf%?HIp0cYvgU)MQrEb}Yfz}p zUEOyz@hkS8Jm0m%_Cmskuih6G<>QmYt@kCKT$-Thz5A2?4;j~&o^O^u;A)-;96h?; zSDyVk;*n1O_~Q%0D!98UHkbN6SDUVL`2TSOA-}Hx6y-fO2dc2jK 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 z9F_mIuIBo@T0hcTl^d${BW-mxH*~e__gTNcVQBS!S$doDR$bp%`KGtKn#sLX9*b=H zPh8DSvuu3fxA#Cz>lW=#Pvu5e^P^_V2Pm&}$@3HK_jkCOn`c+=m!ZjRpX&3lDh z+24a)&GWO>MwagrXsq*mn}!|b^Yp>4W@ArVep>V)HCyJ}_~`cHf3u-xOL@NgytnI= zY>tj+t=isJU4NGMBL^wZimsQA*S@w#_Y3|}{Cm><(P^L9E1%YFSbzWB)znT1*V_O9 z00000000000000000000000000000000000000000000000000000000000000000 z0000000000000000000000000000000000000000000000000000000000000002M z|7Dr|H*xNeTipKpuXFofvbgwOQ#(Qb-bfJv000000000000000008_?h~Cb;dVuTS zUgwT{uCe&e+nE3W00000000000000000000000000000000000000000000000000 z00000{?}Chf7Ew*sb{O(t!L{V^LqO4{Qsx}00000fd7Xj6afGL000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z0000000000000000000000000000000000000000000000000000000007|sbD49= zl2$iknf}vNInh7;waEF(p2}aW@`-|eGZZ#mVcuktv{`n@|ud1jRNRbCwB zPb+VZme;-2&Fma4Z$IU}QQlv9c=Y>2m7Amd8Rc2g@_MwoyYeXaRPGfm?*QdtE?L_> z{61M$0#eGXI}6;1zLk;C*|^f^d*vgI0mdMPikoa@t1d3m({!&=?X8*F(hD}sP^|$GJX!?sq4%2_F&%v$k?j<(;bDG}Xnhqc8(r>L){+M>DBW&lclWxCj e_qN;b>fPeMyP8_R>_)0M0002+fBKrrx&H#xQ9kSd -- 2.47.3

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

' -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 deleted file mode 100644 index 46ac4d3d8..000000000 --- a/bash-20060316/tests/glob.right +++ /dev/null @@ -1,135 +0,0 @@ -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 . - "

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